diff --git a/bin/app/data/src/test.h b/bin/app/data/src/test.h
new file mode 100644
index 00000000..c0ccef2e
--- /dev/null
+++ b/bin/app/data/src/test.h
@@ -0,0 +1,13 @@
+#include "header.h"
+
+void test(int i, int b)
+{
+
+ int x;
+
+ A instanceOfA('v');
+
+ return;
+}
+
+
diff --git a/bin/app/data/test.xml b/bin/app/data/test.xml
new file mode 100644
index 00000000..7e00d101
--- /dev/null
+++ b/bin/app/data/test.xml
@@ -0,0 +1,6 @@
+
+
+
+ data/src
+
+
diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt
index dfc785d4..c1c35d0c 100644
--- a/src/app/CMakeLists.txt
+++ b/src/app/CMakeLists.txt
@@ -19,6 +19,8 @@ add_files(
qt/element/QtSearchBar.h
qt/element/QtSmartSearchBox.cpp
qt/element/QtSmartSearchBox.h
+ qt/element/QtStatusBar.cpp
+ qt/element/QtStatusBar.h
qt/graphics/QtGraphicsRoundedRectItem.cpp
qt/graphics/QtGraphicsRoundedRectItem.h
@@ -52,6 +54,8 @@ add_files(
qt/view/QtMainView.h
qt/view/QtSearchView.cpp
qt/view/QtSearchView.h
+ qt/view/QtStatusBarView.cpp
+ qt/view/QtStatusBarView.h
qt/view/QtViewFactory.cpp
qt/view/QtViewFactory.h
qt/view/QtViewWidgetWrapper.cpp
diff --git a/src/app/qt/element/QtMainWindow.cpp b/src/app/qt/element/QtMainWindow.cpp
index e492bcf8..a424ddcc 100644
--- a/src/app/qt/element/QtMainWindow.cpp
+++ b/src/app/qt/element/QtMainWindow.cpp
@@ -20,6 +20,7 @@ QtMainWindow::QtMainWindow()
{
setObjectName("QtMainWindow");
setCentralWidget(nullptr);
+ setDockNestingEnabled(true);
setupProjectMenu();
setupViewMenu();
@@ -73,8 +74,8 @@ void QtMainWindow::openProject(const QString &path)
}
void QtMainWindow::saveProject()
-{
- MessageSaveProject("").dispatch();
+{
+ MessageSaveProject("").dispatch();
}
void QtMainWindow::saveAsProject()
diff --git a/src/app/qt/element/QtStatusBar.cpp b/src/app/qt/element/QtStatusBar.cpp
new file mode 100644
index 00000000..80773a96
--- /dev/null
+++ b/src/app/qt/element/QtStatusBar.cpp
@@ -0,0 +1,21 @@
+#include "qt/element/QtStatusBar.h"
+
+QtStatusBar::QtStatusBar()
+ : m_text(this)
+{
+ m_text.setText("hallo test test");
+ addWidget(&m_text);
+}
+
+QtStatusBar::~QtStatusBar()
+{
+}
+
+void QtStatusBar::setText(const std::string& text, bool isError)
+{
+ if (isError)
+ {
+ m_text.setStyleSheet("QLabel { color: red }");
+ }
+ m_text.setText(text.c_str());
+}
diff --git a/src/app/qt/element/QtStatusBar.h b/src/app/qt/element/QtStatusBar.h
new file mode 100644
index 00000000..750bd8f1
--- /dev/null
+++ b/src/app/qt/element/QtStatusBar.h
@@ -0,0 +1,20 @@
+#ifndef QT_STATUS_BAR_H
+#define QT_STATUS_BAR_H
+
+#include
+#include
+#include
+#include
+
+class QtStatusBar : public QStatusBar
+{
+public:
+ QtStatusBar(void);
+ ~QtStatusBar(void);
+
+ void setText(const std::string& text, bool isError = false);
+private:
+ QLabel m_text;
+};
+
+#endif // !QT_STATUS_BAR_H
diff --git a/src/app/qt/view/QtMainView.cpp b/src/app/qt/view/QtMainView.cpp
index 34fb2ee7..2ace9a9f 100644
--- a/src/app/qt/view/QtMainView.cpp
+++ b/src/app/qt/view/QtMainView.cpp
@@ -51,3 +51,13 @@ void QtMainView::saveLayout()
{
m_window->saveLayout();
}
+
+QStatusBar* QtMainView::getStatusBar()
+{
+ return m_window->statusBar();
+}
+
+void QtMainView::setStatusBar(QStatusBar* statusbar)
+{
+ m_window->setStatusBar(statusbar);
+}
diff --git a/src/app/qt/view/QtMainView.h b/src/app/qt/view/QtMainView.h
index 905f06ed..900f418a 100644
--- a/src/app/qt/view/QtMainView.h
+++ b/src/app/qt/view/QtMainView.h
@@ -4,6 +4,7 @@
#include
#include
+#include
#include "component/view/MainView.h"
class QtMainWindow;
@@ -25,6 +26,9 @@ public:
virtual void loadLayout();
virtual void saveLayout();
+ virtual QStatusBar* getStatusBar();
+ virtual void setStatusBar(QStatusBar* statusBar);
+
private:
std::shared_ptr m_window;
std::vector m_views;
diff --git a/src/app/qt/view/QtStatusBarView.cpp b/src/app/qt/view/QtStatusBarView.cpp
new file mode 100644
index 00000000..908dfc91
--- /dev/null
+++ b/src/app/qt/view/QtStatusBarView.cpp
@@ -0,0 +1,45 @@
+#include "qt/view/QtStatusBarView.h"
+
+#include
+#include "qt/view/QtMainView.h"
+#include "qt/view/QtViewWidgetWrapper.h"
+
+QtStatusBarView::QtStatusBarView( ViewLayout* viewLayout )
+ : StatusBarView(viewLayout)
+ , m_showMessageFunctor(std::bind(&QtStatusBarView::doShowMessage, this, std::placeholders::_1, std::placeholders::_2))
+{
+ QtMainView* mw = static_cast(viewLayout);
+ m_widget = std::make_shared();
+ QStatusBar* sb = static_cast(m_widget.get());
+ mw->setStatusBar(sb);
+ m_widget->show();
+}
+
+QtStatusBarView::~QtStatusBarView()
+{
+}
+
+void QtStatusBarView::createWidgetWrapper()
+{
+ //setWidgetWrapper(std::make_shared(m_widget));
+}
+
+void QtStatusBarView::initView()
+{
+
+}
+
+void QtStatusBarView::refreshView()
+{
+
+}
+
+void QtStatusBarView::doShowMessage( const std::string& message, bool isError )
+{
+ m_widget->setText(message, isError);
+}
+
+void QtStatusBarView::showMessage( const std::string& message, bool isError )
+{
+ m_showMessageFunctor(message, isError);
+}
diff --git a/src/app/qt/view/QtStatusBarView.h b/src/app/qt/view/QtStatusBarView.h
new file mode 100644
index 00000000..4deb93ff
--- /dev/null
+++ b/src/app/qt/view/QtStatusBarView.h
@@ -0,0 +1,31 @@
+#ifndef QT_STATUS_BAR_VIEW_H
+#define QT_STATUS_BAR_VIEW_H
+
+#include
+#include
+
+#include "component/view/StatusBarView.h"
+#include "qt/element/QtStatusBar.h"
+#include "qt/utility/QtThreadedFunctor.h"
+
+class QtStatusBarView : public StatusBarView
+{
+public:
+ QtStatusBarView(ViewLayout* viewLayout);
+ ~QtStatusBarView();
+
+ // View implementation
+ virtual void createWidgetWrapper();
+ virtual void initView();
+ virtual void refreshView();
+
+ // StatusBar view implementation
+ virtual void showMessage(const std::string& message, bool isError);
+private:
+ void doShowMessage(const std::string& message, bool isError);
+ std::shared_ptr m_widget;
+
+ QtThreadedFunctor m_showMessageFunctor;
+};
+
+#endif // !QT_STATUS_BAR_VIEW_H
\ No newline at end of file
diff --git a/src/app/qt/view/QtViewFactory.cpp b/src/app/qt/view/QtViewFactory.cpp
index 53bccc75..5de0ebd6 100644
--- a/src/app/qt/view/QtViewFactory.cpp
+++ b/src/app/qt/view/QtViewFactory.cpp
@@ -4,6 +4,7 @@
#include "qt/view/QtGraphView.h"
#include "qt/view/QtMainView.h"
#include "qt/view/QtSearchView.h"
+#include "qt/view/QtStatusBarView.h"
QtViewFactory::QtViewFactory()
{
@@ -32,3 +33,8 @@ std::shared_ptr QtViewFactory::createSearchView(ViewLayout* viewLayo
{
return View::create(viewLayout);
}
+
+std::shared_ptr QtViewFactory::createStatusBarView(ViewLayout* viewLayout) const
+{
+ return View::createAndDontAddToLayout(viewLayout);
+}
diff --git a/src/app/qt/view/QtViewFactory.h b/src/app/qt/view/QtViewFactory.h
index 793a4104..c9d545d6 100644
--- a/src/app/qt/view/QtViewFactory.h
+++ b/src/app/qt/view/QtViewFactory.h
@@ -13,6 +13,7 @@ public:
virtual std::shared_ptr createCodeView(ViewLayout* viewLayout) const;
virtual std::shared_ptr createGraphView(ViewLayout* viewLayout) const;
virtual std::shared_ptr createSearchView(ViewLayout* viewLayout) const;
+ virtual std::shared_ptr createStatusBarView(ViewLayout* viewLayout) const;
};
#endif // QT_VIEW_FACTORY_H
diff --git a/src/app/qt/view/graphElements/QtGraphEdge.cpp b/src/app/qt/view/graphElements/QtGraphEdge.cpp
index 8889cf4b..9a79a37e 100644
--- a/src/app/qt/view/graphElements/QtGraphEdge.cpp
+++ b/src/app/qt/view/graphElements/QtGraphEdge.cpp
@@ -121,13 +121,13 @@ void QtCorneredConnection::paint(QPainter *painter, const QStyleOptionGraphicsIt
if (i != 1)
{
- if (dir % 2 == 1 && abs(a.y() - b.y()) < 2 * br)
+ if (dir % 2 == 1 && std::abs(a.y() - b.y()) < 2 * br)
{
- br = abs(a.y() - b.y()) / 2;
+ br = std::abs(a.y() - b.y()) / 2;
}
- else if (dir % 2 == 0 && abs(a.x() - b.x()) < 2 * br)
+ else if (dir % 2 == 0 && std::abs(a.x() - b.x()) < 2 * br)
{
- br = abs(a.x() - b.x()) / 2;
+ br = std::abs(a.x() - b.x()) / 2;
}
}
diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt
index 524560b2..0148438e 100644
--- a/src/lib/CMakeLists.txt
+++ b/src/lib/CMakeLists.txt
@@ -32,6 +32,8 @@ add_files(
component/controller/GraphLayouter.h
component/controller/SearchController.cpp
component/controller/SearchController.h
+ component/controller/StatusBarController.cpp
+ component/controller/StatusBarController.h
component/view/graphElements/GraphEdge.cpp
component/view/graphElements/GraphEdge.h
@@ -46,6 +48,8 @@ add_files(
component/view/MainView.h
component/view/SearchView.cpp
component/view/SearchView.h
+ component/view/StatusBarView.cpp
+ component/view/StatusBarView.h
component/view/View.cpp
component/view/View.h
component/view/ViewFactory.cpp
@@ -191,6 +195,8 @@ add_files(
utility/math/VectorBase.h
utility/messaging/type/MessageActivateToken.h
+ utility/messaging/type/MessageActivateTokens.h
+ utility/messaging/type/MessageError.h
utility/messaging/type/MessageFind.h
utility/messaging/type/MessageFinishedParsing.h
utility/messaging/type/MessageGraphNodeExpand.h
@@ -198,8 +204,11 @@ add_files(
utility/messaging/type/MessageLoadProject.h
utility/messaging/type/MessageLoadSource.h
utility/messaging/type/MessageRefresh.h
+ utility/messaging/type/MessageSaveProject.h
utility/messaging/type/MessageSearch.h
+ utility/messaging/type/MessageSearchAutocomplete.h
utility/messaging/type/MessageShowFile.h
+ utility/messaging/type/MessageStatus.h
utility/messaging/Message.h
utility/messaging/MessageBase.h
diff --git a/src/lib/component/ComponentFactory.cpp b/src/lib/component/ComponentFactory.cpp
index 21282940..7d345d31 100644
--- a/src/lib/component/ComponentFactory.cpp
+++ b/src/lib/component/ComponentFactory.cpp
@@ -4,9 +4,11 @@
#include "component/controller/CodeController.h"
#include "component/controller/GraphController.h"
#include "component/controller/SearchController.h"
+#include "component/controller/StatusBarController.h"
#include "component/view/CodeView.h"
#include "component/view/GraphView.h"
#include "component/view/SearchView.h"
+#include "component/view/StatusBarView.h"
#include "component/view/ViewFactory.h"
#include "component/view/ViewLayout.h"
@@ -52,6 +54,18 @@ std::shared_ptr ComponentFactory::createSearchComponent()
return component;
}
+std::shared_ptr ComponentFactory::createStatusBarComponent()
+{
+ std::shared_ptr view = m_viewFactory->createStatusBarView(m_viewLayout);
+ std::shared_ptr controller = std::make_shared();
+
+ std::shared_ptr component = std::make_shared(view,controller);
+ return component;
+}
+
+
+
ComponentFactory::ComponentFactory()
{
}
+
diff --git a/src/lib/component/ComponentFactory.h b/src/lib/component/ComponentFactory.h
index 5c1dab5d..f3f72be1 100644
--- a/src/lib/component/ComponentFactory.h
+++ b/src/lib/component/ComponentFactory.h
@@ -22,6 +22,7 @@ public:
std::shared_ptr createCodeComponent();
std::shared_ptr createGraphComponent();
std::shared_ptr createSearchComponent();
+ std::shared_ptr createStatusBarComponent();
private:
ComponentFactory();
diff --git a/src/lib/component/ComponentManager.cpp b/src/lib/component/ComponentManager.cpp
index f1771ff4..7ee8be71 100644
--- a/src/lib/component/ComponentManager.cpp
+++ b/src/lib/component/ComponentManager.cpp
@@ -26,6 +26,9 @@ void ComponentManager::setup()
std::shared_ptr searchComponent = m_componentFactory->createSearchComponent();
m_components.push_back(searchComponent);
+
+ std::shared_ptr statusBarComponent = m_componentFactory->createStatusBarComponent();
+ m_components.push_back(statusBarComponent);
}
ComponentManager::ComponentManager()
diff --git a/src/lib/component/controller/StatusBarController.cpp b/src/lib/component/controller/StatusBarController.cpp
new file mode 100644
index 00000000..466530f1
--- /dev/null
+++ b/src/lib/component/controller/StatusBarController.cpp
@@ -0,0 +1,39 @@
+#include "component/controller/StatusBarController.h"
+
+#include "component/view/StatusBarView.h"
+
+StatusBarController::StatusBarController()
+{
+
+}
+
+StatusBarController::~StatusBarController()
+{
+}
+
+StatusBarView* StatusBarController::getView()
+{
+ return Controller::getView();
+}
+
+void StatusBarController::handleMessage(MessageFinishedParsing* message)
+{
+ setStatus("Parsing Finished");
+}
+
+void StatusBarController::handleMessage(MessageStatus* message)
+{
+ setStatus(message->status);
+}
+
+void StatusBarController::handleMessage(MessageError* message)
+{
+ setStatus(message->error, true);
+}
+
+void StatusBarController::setStatus(const std::string& status, bool isError)
+{
+ if(!status.empty())
+ getView()->showMessage(status, isError);
+}
+
diff --git a/src/lib/component/controller/StatusBarController.h b/src/lib/component/controller/StatusBarController.h
new file mode 100644
index 00000000..cbb0bdf5
--- /dev/null
+++ b/src/lib/component/controller/StatusBarController.h
@@ -0,0 +1,35 @@
+#ifndef STATUS_BAR_CONTROLLER_H
+#define STATUS_BAR_CONTROLLER_H
+
+#include
+
+#include "component/controller/Controller.h"
+
+#include "utility/messaging/MessageListener.h"
+#include "utility/messaging/type/MessageError.h"
+#include "utility/messaging/type/MessageFinishedParsing.h"
+#include "utility/messaging/type/MessageStatus.h"
+
+class StatusBarView;
+
+class StatusBarController
+ : public Controller
+ , public MessageListener
+ , public MessageListener
+ , public MessageListener
+{
+public:
+
+ StatusBarController(void);
+ ~StatusBarController(void);
+
+ StatusBarView* getView();
+private:
+ void setStatus(const std::string& status, bool isError = false);
+
+ virtual void handleMessage(MessageError* message);
+ virtual void handleMessage(MessageFinishedParsing* message);
+ virtual void handleMessage(MessageStatus* message);
+};
+
+#endif // STATUS_BAR_CONTROLLER_H
diff --git a/src/lib/component/view/CodeView.cpp b/src/lib/component/view/CodeView.cpp
index 1d7d1568..e656b8c9 100644
--- a/src/lib/component/view/CodeView.cpp
+++ b/src/lib/component/view/CodeView.cpp
@@ -15,6 +15,10 @@ CodeView::CodeSnippetParams::CodeSnippetParams()
bool CodeView::CodeSnippetParams::sort( CodeSnippetParams a, CodeSnippetParams b )
{
+ if(a.isActive && b.isActive)
+ {
+ return false;
+ }
// sort active snippet first
if(a.isActive)
{
diff --git a/src/lib/component/view/MainView.h b/src/lib/component/view/MainView.h
index b1f90af4..7925681e 100644
--- a/src/lib/component/view/MainView.h
+++ b/src/lib/component/view/MainView.h
@@ -8,6 +8,7 @@ class MainView: public ViewLayout
public:
MainView();
virtual ~MainView();
+
};
#endif // MAIN_VIEW_H
diff --git a/src/lib/component/view/StatusBarView.cpp b/src/lib/component/view/StatusBarView.cpp
new file mode 100644
index 00000000..e146d07e
--- /dev/null
+++ b/src/lib/component/view/StatusBarView.cpp
@@ -0,0 +1,24 @@
+#include "component/view/StatusBarView.h"
+
+#include "component/controller/StatusBarController.h"
+
+StatusBarView::StatusBarView(ViewLayout* viewLayout)
+ : View(viewLayout, Vec2i(100,100))
+{
+
+}
+
+StatusBarView::~StatusBarView()
+{
+
+}
+
+std::string StatusBarView::getName() const
+{
+ return "StatusBarView";
+}
+
+StatusBarController* StatusBarView::getController()
+{
+ return View::getController();
+}
\ No newline at end of file
diff --git a/src/lib/component/view/StatusBarView.h b/src/lib/component/view/StatusBarView.h
new file mode 100644
index 00000000..cdf92442
--- /dev/null
+++ b/src/lib/component/view/StatusBarView.h
@@ -0,0 +1,20 @@
+#ifndef STATUS_BAR_VIEW_H
+#define STATUS_BAR_VIEW_H
+
+#include "component/view/View.h"
+
+class StatusBarController;
+
+class StatusBarView : public View
+{
+public:
+ StatusBarView(ViewLayout* viewLayout);
+ ~StatusBarView(void);
+
+ virtual std::string getName() const;
+ virtual void showMessage(const std::string& message, bool isError) = 0;
+protected:
+ StatusBarController* getController();
+};
+
+#endif //STATUS_BAR_VIEW_H
diff --git a/src/lib/component/view/View.h b/src/lib/component/view/View.h
index 579c2694..4ad3b0f7 100644
--- a/src/lib/component/view/View.h
+++ b/src/lib/component/view/View.h
@@ -16,6 +16,9 @@ public:
template
static std::shared_ptr create(ViewLayout* viewLayout);
+ template
+ static std::shared_ptr createAndDontAddToLayout(ViewLayout* viewLayout);
+
View(ViewLayout* viewLayout, const Vec2i& minSize);
virtual ~View();
@@ -60,6 +63,19 @@ std::shared_ptr View::create(ViewLayout* viewLayout)
return ptr;
}
+template
+std::shared_ptr View::createAndDontAddToLayout(ViewLayout* viewLayout)
+{
+ std::shared_ptr ptr = std::make_shared(viewLayout);
+
+ ptr->createWidgetWrapper();
+ ptr->initView();
+
+ //viewLayout->addView(ptr.get());
+
+ return ptr;
+}
+
template
ControllerType* View::getController()
{
diff --git a/src/lib/component/view/ViewFactory.h b/src/lib/component/view/ViewFactory.h
index 80c83f9a..f079b01e 100644
--- a/src/lib/component/view/ViewFactory.h
+++ b/src/lib/component/view/ViewFactory.h
@@ -7,6 +7,7 @@ class CodeView;
class GraphView;
class MainView;
class SearchView;
+class StatusBarView;
class ViewLayout;
class ViewFactory
@@ -19,6 +20,7 @@ public:
virtual std::shared_ptr createCodeView(ViewLayout* viewLayout) const = 0;
virtual std::shared_ptr createGraphView(ViewLayout* viewLayout) const = 0;
virtual std::shared_ptr createSearchView(ViewLayout* viewLayout) const = 0;
+ virtual std::shared_ptr createStatusBarView(ViewLayout* viewLayout) const = 0;
};
#endif // VIEW_FACTORY_H
diff --git a/src/lib/data/search/SearchNode.cpp b/src/lib/data/search/SearchNode.cpp
index 74fa7d54..71b0c04d 100644
--- a/src/lib/data/search/SearchNode.cpp
+++ b/src/lib/data/search/SearchNode.cpp
@@ -1,5 +1,7 @@
#include "data/search/SearchNode.h"
+#include
+
#include "utility/text/Dictionary.h"
#include "data/search/SearchIndex.h"
diff --git a/src/lib/data/search/SearchResult.h b/src/lib/data/search/SearchResult.h
index 89c3adc6..f550fd5f 100644
--- a/src/lib/data/search/SearchResult.h
+++ b/src/lib/data/search/SearchResult.h
@@ -2,6 +2,7 @@
#define SEARCH_RESULT_H
#include
+#include
class SearchNode;
diff --git a/src/lib/utility/messaging/type/MessageError.h b/src/lib/utility/messaging/type/MessageError.h
new file mode 100644
index 00000000..e61ee1be
--- /dev/null
+++ b/src/lib/utility/messaging/type/MessageError.h
@@ -0,0 +1,26 @@
+#ifndef MESSAGE_ERROR_H
+#define MESSAGE_ERROR_H
+
+#include "utility/messaging/Message.h"
+#include "utility/types.h"
+
+class MessageError: public Message
+{
+public:
+ MessageError(
+ const std::string& error
+ )
+ : error(error)
+
+ {
+ }
+
+ static const std::string getStaticType()
+ {
+ return "MessageError";
+ }
+
+ const std::string error;
+};
+
+#endif // MESSAGE_ERROR_H
diff --git a/src/lib/utility/messaging/type/MessageStatus.h b/src/lib/utility/messaging/type/MessageStatus.h
new file mode 100644
index 00000000..08a5c9eb
--- /dev/null
+++ b/src/lib/utility/messaging/type/MessageStatus.h
@@ -0,0 +1,26 @@
+#ifndef MESSAGE_STATUS_H
+#define MESSAGE_STATUS_H
+
+#include "utility/messaging/Message.h"
+#include "utility/types.h"
+
+class MessageStatus: public Message
+{
+public:
+ MessageStatus(
+ const std::string& status
+ )
+ : status(status)
+
+ {
+ }
+
+ static const std::string getStaticType()
+ {
+ return "MessageStatus";
+ }
+
+ const std::string status;
+};
+
+#endif // MESSAGE_STATUS_H
diff --git a/src/lib/utility/utilityString.cpp b/src/lib/utility/utilityString.cpp
index a64f7c08..d621010c 100644
--- a/src/lib/utility/utilityString.cpp
+++ b/src/lib/utility/utilityString.cpp
@@ -1,5 +1,6 @@
#include "utility/utilityString.h"
+#include
#include
#include