ui: added shortcut to refresh view

Added a refresh shortcut to the new View menu, that causes stylesheets to be refreshed by dispatching a MessageRefresh.
This commit is contained in:
Eberhard Graether
2014-07-21 17:49:41 +02:00
parent 0074db86e8
commit 5d201b9880
15 changed files with 117 additions and 4 deletions
+15
View File
@@ -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);
+2
View File
@@ -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;
+19 -1
View File
@@ -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<QScrollArea*>(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());
}
+6 -1
View File
@@ -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<QFrame> m_frame;
std::vector<std::shared_ptr<QtCodeFile> > m_files;
QtThreadedFunctor<void> m_clearCodeSnippetsFunctor;
QtThreadedFunctor<> m_refreshViewFunctor;
QtThreadedFunctor<> m_clearCodeSnippetsFunctor;
QtThreadedFunctor<const CodeSnippetParams> m_addCodeSnippetFunctor;
};
+4
View File
@@ -51,6 +51,10 @@ void QtGraphView::initView()
widget->layout()->addWidget(view);
}
void QtGraphView::refreshView()
{
}
void QtGraphView::rebuildGraph(const std::vector<DummyNode>& nodes, const std::vector<DummyEdge>& edges)
{
m_rebuildGraph(nodes, edges);
+1
View File
@@ -21,6 +21,7 @@ public:
// View implementation
virtual void createWidgetWrapper();
virtual void initView();
virtual void refreshView();
virtual void rebuildGraph(const std::vector<DummyNode>& nodes, const std::vector<DummyEdge>& edges);
+27 -2
View File
@@ -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<std::string>& 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());
}
}
+5
View File
@@ -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<std::string>& autocompletionList);
void setStyleSheet();
QtEditBox* m_searchBox;
QtButton* m_searchButton;
QtButton* m_caseSensitiveButton;
QtThreadedFunctor<> m_refreshViewFunctor;
QtThreadedFunctor<const std::string&> m_setTextFunctor;
QtThreadedFunctor<> m_setFocusFunctor;
QtThreadedFunctor<const std::vector<std::string>&> m_setAutocompletionListFunctor;
+1
View File
@@ -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
@@ -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<CodeView>();
@@ -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<MessageActivateToken>
, public MessageListener<MessageRefresh>
{
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;
@@ -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<SearchView>();
@@ -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<MessageActivateToken>
, public MessageListener<MessageFind>
, public MessageListener<MessageFinishedParsing>
, public MessageListener<MessageRefresh>
{
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;
+1
View File
@@ -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);
@@ -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<MessageRefresh>
{
public:
MessageRefresh()
{
}
static const std::string getStaticType()
{
return "MessageRefresh";
}
};
#endif // MESSAGE_REFRESH_H