ui: Create bookmarks from graph context menu for node under mouse cursor (issue #373)

bug id = 373
This commit is contained in:
Eberhard Graether
2017-05-15 00:45:50 +02:00
parent 6de0021f70
commit c94b5f34a3
13 changed files with 103 additions and 64 deletions
@@ -17,6 +17,7 @@
#include "qt/utility/QtContextMenu.h"
#include "qt/utility/utilityQt.h"
#include "settings/ApplicationSettings.h"
#include "utility/messaging/type/MessageDisplayBookmarkCreator.h"
#include "utility/ResourcePaths.h"
QtGraphicsView::QtGraphicsView(QWidget* parent)
@@ -52,6 +53,11 @@ QtGraphicsView::QtGraphicsView(QWidget* parent)
m_copyNodeNameAction->setToolTip(tr("Copies the name of this node to the clipboard"));
connect(m_copyNodeNameAction, SIGNAL(triggered()), this, SLOT(copyNodeName()));
m_bookmarkNodeAction = new QAction(tr("Bookmark Node"), this);
m_bookmarkNodeAction->setStatusTip(tr("Create a bookmark for this node"));
m_bookmarkNodeAction->setToolTip(tr("Create a bookmark for this node"));
connect(m_bookmarkNodeAction, SIGNAL(triggered()), this, SLOT(bookmarkNode()));
m_zoomInButton = new QPushButton(this);
m_zoomInButton->setObjectName("zoom_in_button");
m_zoomInButton->setAutoRepeat(true);
@@ -277,6 +283,7 @@ void QtGraphicsView::wheelEvent(QWheelEvent* event)
void QtGraphicsView::contextMenuEvent(QContextMenuEvent* event)
{
m_clipboardNodeName = "";
m_bookmarkNodeId = 0;
FilePath clipboardFilePath;
QtGraphNode* node = getNodeAtCursorPosition();
@@ -286,6 +293,7 @@ void QtGraphicsView::contextMenuEvent(QContextMenuEvent* event)
if (dataNode)
{
m_clipboardNodeName = dataNode->getName();
m_bookmarkNodeId = dataNode->getTokenId();
clipboardFilePath = dataNode->getFilePath();
}
else if (dynamic_cast<QtGraphNodeBundle*>(node))
@@ -300,6 +308,12 @@ void QtGraphicsView::contextMenuEvent(QContextMenuEvent* event)
menu.addSeparator();
menu.addAction(m_exportGraphAction);
if (m_bookmarkNodeId)
{
menu.addSeparator();
menu.addAction(m_bookmarkNodeAction);
}
if (!m_clipboardNodeName.empty() || !clipboardFilePath.empty())
{
menu.addSeparator();
@@ -455,6 +469,11 @@ void QtGraphicsView::copyNodeName()
QApplication::clipboard()->setText(m_clipboardNodeName.c_str());
}
void QtGraphicsView::bookmarkNode()
{
MessageDisplayBookmarkCreator(m_bookmarkNodeId).dispatch();
}
void QtGraphicsView::zoomInPressed()
{
updateZoom(m_zoomInButtonSpeed);
+5
View File
@@ -6,6 +6,8 @@
#include <QGraphicsView>
#include <QPushButton>
#include "utility/types.h"
class QTimer;
class QtGraphNode;
@@ -51,6 +53,7 @@ private slots:
void exportGraph();
void copyNodeName();
void bookmarkNode();
void zoomInPressed();
void zoomOutPressed();
@@ -72,12 +75,14 @@ private:
bool m_shift;
std::string m_clipboardNodeName;
Id m_bookmarkNodeId;
std::shared_ptr<QTimer> m_timer;
std::shared_ptr<QTimer> m_timerStopper;
QAction* m_exportGraphAction;
QAction* m_copyNodeNameAction;
QAction* m_bookmarkNodeAction;
QPushButton* m_zoomInButton;
QPushButton* m_zoomOutButton;
+3 -2
View File
@@ -191,7 +191,7 @@ void QtBookmarkView::displayBookmarks(const std::vector<std::shared_ptr<Bookmark
);
}
void QtBookmarkView::displayBookmarkCreator(const std::vector<std::string>& names, const std::vector<BookmarkCategory>& categories)
void QtBookmarkView::displayBookmarkCreator(const std::vector<std::string>& names, const std::vector<BookmarkCategory>& categories, Id nodeId)
{
m_onQtThread(
[=]()
@@ -213,6 +213,8 @@ void QtBookmarkView::displayBookmarkCreator(const std::vector<std::string>& name
bookmarkCreator->setDisplayName(displayName);
bookmarkCreator->setBookmarkCategories(categories);
bookmarkCreator->setNodeId(nodeId);
bookmarkCreator->show();
bookmarkCreator->raise();
}
@@ -230,7 +232,6 @@ void QtBookmarkView::displayBookmarkEditor(std::shared_ptr<Bookmark> bookmark, c
bookmarkCreator->setComment(bookmark->getComment());
bookmarkCreator->setBookmarkCategories(categories);
bookmarkCreator->setCurrentBookmarkCategory(bookmark->getCategory());
bookmarkCreator->setIsEdge((dynamic_cast<EdgeBookmark*>(bookmark.get()) != nullptr));
bookmarkCreator->show();
bookmarkCreator->raise();
+1 -1
View File
@@ -35,7 +35,7 @@ private slots:
private:
virtual void displayBookmarks(const std::vector<std::shared_ptr<Bookmark>>& bookmarks);
virtual void displayBookmarkCreator(const std::vector<std::string>& names, const std::vector<BookmarkCategory>& categories);
virtual void displayBookmarkCreator(const std::vector<std::string>& names, const std::vector<BookmarkCategory>& categories, Id nodeId);
virtual void displayBookmarkEditor(std::shared_ptr<Bookmark> bookmark, const std::vector<BookmarkCategory>& categories);
void setStyleSheet();
+5 -9
View File
@@ -19,6 +19,7 @@ QtBookmarkCreator::QtBookmarkCreator(QWidget* parent, bool edit, Id id)
, m_edit(edit)
, m_bookmarkId(id)
, m_categoryCount(0)
, m_nodeId(0)
{
}
@@ -151,14 +152,9 @@ void QtBookmarkCreator::setCurrentBookmarkCategory(const BookmarkCategory& categ
}
}
bool QtBookmarkCreator::getIsEdge() const
void QtBookmarkCreator::setNodeId(Id nodeId)
{
return m_isEdge;
}
void QtBookmarkCreator::setIsEdge(const bool isEdge)
{
m_isEdge = isEdge;
m_nodeId = nodeId;
}
void QtBookmarkCreator::resizeEvent(QResizeEvent* event)
@@ -177,11 +173,11 @@ void QtBookmarkCreator::handleNext()
if (m_edit)
{
MessageEditBookmark(
m_bookmarkId, qComment.toStdString(), qDisplayName.toStdString(), qCategory.toStdString(), m_isEdge).dispatch();
m_bookmarkId, qComment.toStdString(), qDisplayName.toStdString(), qCategory.toStdString()).dispatch();
}
else
{
MessageCreateBookmark(qComment.toStdString(), qDisplayName.toStdString(), qCategory.toStdString()).dispatch();
MessageCreateBookmark(qComment.toStdString(), qDisplayName.toStdString(), qCategory.toStdString(), m_nodeId).dispatch();
}
MessageStatus("Creating Bookmark for active Token").dispatch();
+2 -3
View File
@@ -31,8 +31,7 @@ public:
void setBookmarkCategories(const std::vector<BookmarkCategory>& categories);
void setCurrentBookmarkCategory(const BookmarkCategory& category);
bool getIsEdge() const;
void setIsEdge(const bool isEdge);
void setNodeId(Id nodeId);
protected:
virtual void resizeEvent(QResizeEvent* event) Q_DECL_OVERRIDE;
@@ -54,7 +53,7 @@ private:
int m_categoryCount;
bool m_isEdge;
Id m_nodeId;
QWidget* m_headerBackground;
};