diff --git a/src/app/qt/element/QtMainWindow.cpp b/src/app/qt/element/QtMainWindow.cpp index 7572d08a..84ac7a13 100644 --- a/src/app/qt/element/QtMainWindow.cpp +++ b/src/app/qt/element/QtMainWindow.cpp @@ -13,6 +13,7 @@ #include "utility/messaging/type/MessageFind.h" #include "utility/messaging/type/MessageLoadProject.h" #include "utility/messaging/type/MessageLoadSource.h" +#include "utility/messaging/type/MessageRefresh.h" QtMainWindow::QtMainWindow() { @@ -21,6 +22,7 @@ QtMainWindow::QtMainWindow() setupProjectMenu(); setupFindMenu(); + setupViewMenu(); setupHelpMenu(); } @@ -74,6 +76,11 @@ void QtMainWindow::find() MessageFind().dispatch(); } +void QtMainWindow::refresh() +{ + MessageRefresh().dispatch(); +} + void QtMainWindow::addView(View* view) { QDockWidget* dock = new QDockWidget(tr(view->getName().c_str()), this); @@ -177,6 +184,14 @@ void QtMainWindow::setupFindMenu() menu->addAction(tr("&Find"), this, SLOT(find()), QKeySequence::Find); } +void QtMainWindow::setupViewMenu() +{ + QMenu *menu = new QMenu(tr("&View"), this); + menuBar()->addMenu(menu); + + menu->addAction(tr("&Refresh"), this, SLOT(refresh()), QKeySequence::Refresh); +} + void QtMainWindow::setupHelpMenu() { QMenu *menu = new QMenu(tr("&Help"), this); diff --git a/src/app/qt/element/QtMainWindow.h b/src/app/qt/element/QtMainWindow.h index 47885223..227e374a 100644 --- a/src/app/qt/element/QtMainWindow.h +++ b/src/app/qt/element/QtMainWindow.h @@ -31,10 +31,12 @@ public slots: void newProject(); void openProject(const QString &path = QString()); void find(); + void refresh(); private: void setupProjectMenu(); void setupFindMenu(); + void setupViewMenu(); void setupHelpMenu(); QDockWidget* getDockWidgetForView(View* view) const; diff --git a/src/app/qt/view/QtCodeView.cpp b/src/app/qt/view/QtCodeView.cpp index af447703..8597e752 100644 --- a/src/app/qt/view/QtCodeView.cpp +++ b/src/app/qt/view/QtCodeView.cpp @@ -14,6 +14,7 @@ QtCodeView::QtCodeView(ViewLayout* viewLayout) : CodeView(viewLayout) + , m_refreshViewFunctor(std::bind(&QtCodeView::doRefreshView, this)) , m_clearCodeSnippetsFunctor(std::bind(&QtCodeView::doClearCodeSnippets, this)) , m_addCodeSnippetFunctor(std::bind(&QtCodeView::doAddCodeSnippet, this, std::placeholders::_1)) { @@ -31,7 +32,6 @@ void QtCodeView::createWidgetWrapper() void QtCodeView::initView() { QWidget* widget = QtViewWidgetWrapper::getWidgetOfView(this); - widget->setStyleSheet(TextAccess::createFromFile("data/gui/code_view/code_view.css")->getText().c_str()); widget->setObjectName("code_view"); QScrollArea* scroll = dynamic_cast(widget); @@ -45,6 +45,13 @@ void QtCodeView::initView() scroll->setWidgetResizable(true); scroll->setWidget(m_frame.get()); + + setStyleSheet(); +} + +void QtCodeView::refreshView() +{ + m_refreshViewFunctor(); } void QtCodeView::addCodeSnippet(const CodeSnippetParams params) @@ -63,6 +70,11 @@ void QtCodeView::activateToken(Id tokenId) const message.dispatch(); } +void QtCodeView::doRefreshView() +{ + setStyleSheet(); +} + void QtCodeView::doAddCodeSnippet(const CodeSnippetParams params) { std::string fileName = FileSystem::fileName(params.locationFile.getFilePath()); @@ -94,3 +106,9 @@ void QtCodeView::doClearCodeSnippets() { m_files.clear(); } + +void QtCodeView::setStyleSheet() +{ + QWidget* widget = QtViewWidgetWrapper::getWidgetOfView(this); + widget->setStyleSheet(TextAccess::createFromFile("data/gui/code_view/code_view.css")->getText().c_str()); +} diff --git a/src/app/qt/view/QtCodeView.h b/src/app/qt/view/QtCodeView.h index bb4d2d5d..f657a929 100644 --- a/src/app/qt/view/QtCodeView.h +++ b/src/app/qt/view/QtCodeView.h @@ -20,6 +20,7 @@ public: // View implementation virtual void createWidgetWrapper(); virtual void initView(); + virtual void refreshView(); // CodeView implementation virtual void addCodeSnippet(const CodeSnippetParams params); @@ -28,13 +29,17 @@ public: void activateToken(Id tokenId) const; private: + void doRefreshView(); void doAddCodeSnippet(const CodeSnippetParams params); void doClearCodeSnippets(); + void setStyleSheet(); + std::shared_ptr m_frame; std::vector > m_files; - QtThreadedFunctor m_clearCodeSnippetsFunctor; + QtThreadedFunctor<> m_refreshViewFunctor; + QtThreadedFunctor<> m_clearCodeSnippetsFunctor; QtThreadedFunctor m_addCodeSnippetFunctor; }; diff --git a/src/app/qt/view/QtGraphView.cpp b/src/app/qt/view/QtGraphView.cpp index 0ef92346..4ab36208 100644 --- a/src/app/qt/view/QtGraphView.cpp +++ b/src/app/qt/view/QtGraphView.cpp @@ -51,6 +51,10 @@ void QtGraphView::initView() widget->layout()->addWidget(view); } +void QtGraphView::refreshView() +{ +} + void QtGraphView::rebuildGraph(const std::vector& nodes, const std::vector& edges) { m_rebuildGraph(nodes, edges); diff --git a/src/app/qt/view/QtGraphView.h b/src/app/qt/view/QtGraphView.h index ca87c2ce..eb1b586c 100644 --- a/src/app/qt/view/QtGraphView.h +++ b/src/app/qt/view/QtGraphView.h @@ -21,6 +21,7 @@ public: // View implementation virtual void createWidgetWrapper(); virtual void initView(); + virtual void refreshView(); virtual void rebuildGraph(const std::vector& nodes, const std::vector& edges); diff --git a/src/app/qt/view/QtSearchView.cpp b/src/app/qt/view/QtSearchView.cpp index f5c998ba..7cffc59f 100644 --- a/src/app/qt/view/QtSearchView.cpp +++ b/src/app/qt/view/QtSearchView.cpp @@ -11,6 +11,7 @@ QtSearchView::QtSearchView(ViewLayout* viewLayout) : SearchView(viewLayout) + , m_refreshViewFunctor(std::bind(&QtSearchView::doRefreshView, this)) , m_setTextFunctor(std::bind(&QtSearchView::doSetText, this, std::placeholders::_1)) , m_setFocusFunctor(std::bind(&QtSearchView::doSetFocus, this)) , m_setAutocompletionListFunctor(std::bind(&QtSearchView::doSetAutocompletionList, this, std::placeholders::_1)) @@ -30,7 +31,6 @@ void QtSearchView::initView() { QWidget* widget = QtViewWidgetWrapper::getWidgetOfView(this); widget->setObjectName("search_view"); - widget->setStyleSheet(TextAccess::createFromFile("data/gui/search_view/search_view.css")->getText().c_str()); QBoxLayout* layout = new QBoxLayout(QBoxLayout::LeftToRight); layout->setSpacing(0); @@ -53,6 +53,13 @@ void QtSearchView::initView() m_caseSensitiveButton->setCheckable(true); m_caseSensitiveButton->setToolTip("case sensitive"); widget->layout()->addWidget(m_caseSensitiveButton); + + setStyleSheet(); +} + +void QtSearchView::refreshView() +{ + m_refreshViewFunctor(); } void QtSearchView::setText(const std::string& s) @@ -79,6 +86,11 @@ void QtSearchView::onSearchButtonClick() } } +void QtSearchView::doRefreshView() +{ + setStyleSheet(); +} + void QtSearchView::doSetText(const std::string& s) { if (m_searchBox->text() != s.c_str()) @@ -105,5 +117,18 @@ void QtSearchView::doSetAutocompletionList(const std::vector& autoc completer->popup()->setObjectName("search_box_popup"); completer->setCaseSensitivity(Qt::CaseInsensitive); m_searchBox->setCompleter(completer); - completer->popup()->setStyleSheet(TextAccess::createFromFile("data/gui/search_view/search_view.css")->getText().c_str()); + setStyleSheet(); +} + +void QtSearchView::setStyleSheet() +{ + std::string css = TextAccess::createFromFile("data/gui/search_view/search_view.css")->getText(); + + QWidget* widget = QtViewWidgetWrapper::getWidgetOfView(this); + widget->setStyleSheet(css.c_str()); + + if (m_searchBox->completer()) + { + m_searchBox->completer()->popup()->setStyleSheet(css.c_str()); + } } diff --git a/src/app/qt/view/QtSearchView.h b/src/app/qt/view/QtSearchView.h index a38fe3e7..bef09cb6 100644 --- a/src/app/qt/view/QtSearchView.h +++ b/src/app/qt/view/QtSearchView.h @@ -18,6 +18,7 @@ public: // View implementation virtual void createWidgetWrapper(); virtual void initView(); + virtual void refreshView(); // SearchView implementation virtual void setText(const std::string& s); @@ -27,14 +28,18 @@ public: private: void onSearchButtonClick(); + void doRefreshView(); void doSetText(const std::string& s); void doSetFocus(); void doSetAutocompletionList(const std::vector& autocompletionList); + void setStyleSheet(); + QtEditBox* m_searchBox; QtButton* m_searchButton; QtButton* m_caseSensitiveButton; + QtThreadedFunctor<> m_refreshViewFunctor; QtThreadedFunctor m_setTextFunctor; QtThreadedFunctor<> m_setFocusFunctor; QtThreadedFunctor&> m_setAutocompletionListFunctor; diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt index 9e29b13b..fd674434 100644 --- a/src/lib/CMakeLists.txt +++ b/src/lib/CMakeLists.txt @@ -153,6 +153,7 @@ add_files( utility/messaging/type/MessageFinishedParsing.h utility/messaging/type/MessageLoadProject.h utility/messaging/type/MessageLoadSource.h + utility/messaging/type/MessageRefresh.h utility/messaging/Message.h utility/messaging/MessageBase.h diff --git a/src/lib/component/controller/CodeController.cpp b/src/lib/component/controller/CodeController.cpp index f0254ac0..b10c6540 100644 --- a/src/lib/component/controller/CodeController.cpp +++ b/src/lib/component/controller/CodeController.cpp @@ -59,6 +59,11 @@ void CodeController::handleMessage(MessageActivateToken* message) setActiveTokenId(message->tokenId); } +void CodeController::handleMessage(MessageRefresh* message) +{ + getView()->refreshView(); +} + CodeView* CodeController::getView() { return Controller::getView(); diff --git a/src/lib/component/controller/CodeController.h b/src/lib/component/controller/CodeController.h index 7cfc0a62..6e363f86 100644 --- a/src/lib/component/controller/CodeController.h +++ b/src/lib/component/controller/CodeController.h @@ -6,6 +6,7 @@ #include "component/controller/Controller.h" #include "utility/messaging/MessageListener.h" #include "utility/messaging/type/MessageActivateToken.h" +#include "utility/messaging/type/MessageRefresh.h" #include "utility/types.h" class CodeView; @@ -20,6 +21,7 @@ struct AnnotatedText class CodeController : public Controller , public MessageListener + , public MessageListener { public: CodeController(LocationAccess* locationAccess); @@ -29,6 +31,7 @@ public: private: virtual void handleMessage(MessageActivateToken* message); + virtual void handleMessage(MessageRefresh* message); CodeView* getView(); LocationAccess* m_locationAccess; diff --git a/src/lib/component/controller/SearchController.cpp b/src/lib/component/controller/SearchController.cpp index 8204469c..db271dca 100644 --- a/src/lib/component/controller/SearchController.cpp +++ b/src/lib/component/controller/SearchController.cpp @@ -43,6 +43,11 @@ void SearchController::handleMessage(MessageFinishedParsing* message) getView()->setAutocompletionList(m_graphAccess->getNamesForNodesWithNamePrefix("")); } +void SearchController::handleMessage(MessageRefresh* message) +{ + getView()->refreshView(); +} + SearchView* SearchController::getView() { return Controller::getView(); diff --git a/src/lib/component/controller/SearchController.h b/src/lib/component/controller/SearchController.h index 993538b5..71995540 100644 --- a/src/lib/component/controller/SearchController.h +++ b/src/lib/component/controller/SearchController.h @@ -8,6 +8,7 @@ #include "utility/messaging/type/MessageActivateToken.h" #include "utility/messaging/type/MessageFind.h" #include "utility/messaging/type/MessageFinishedParsing.h" +#include "utility/messaging/type/MessageRefresh.h" class GraphAccess; class SearchView; @@ -17,6 +18,7 @@ class SearchController , public MessageListener , public MessageListener , public MessageListener + , public MessageListener { public: SearchController(GraphAccess* graphAccess); @@ -29,6 +31,7 @@ private: virtual void handleMessage(MessageActivateToken* message); virtual void handleMessage(MessageFind* message); virtual void handleMessage(MessageFinishedParsing* message); + virtual void handleMessage(MessageRefresh* message); SearchView* getView(); GraphAccess* m_graphAccess; diff --git a/src/lib/component/view/View.h b/src/lib/component/view/View.h index 47b8dd47..501e5416 100644 --- a/src/lib/component/view/View.h +++ b/src/lib/component/view/View.h @@ -22,6 +22,7 @@ public: virtual std::string getName() const = 0; virtual void createWidgetWrapper() = 0; virtual void initView() = 0; + virtual void refreshView() = 0; void setComponent(Component* component); diff --git a/src/lib/utility/messaging/type/MessageRefresh.h b/src/lib/utility/messaging/type/MessageRefresh.h new file mode 100644 index 00000000..020bda4b --- /dev/null +++ b/src/lib/utility/messaging/type/MessageRefresh.h @@ -0,0 +1,20 @@ +#ifndef MESSAGE_REFRESH_H +#define MESSAGE_REFRESH_H + +#include "utility/messaging/Message.h" +#include "utility/types.h" + +class MessageRefresh: public Message +{ +public: + MessageRefresh() + { + } + + static const std::string getStaticType() + { + return "MessageRefresh"; + } +}; + +#endif // MESSAGE_REFRESH_H