diff --git a/GUI/coregui/Views/Components/SampleDesigner/DesignerScene.cpp b/GUI/coregui/Views/Components/SampleDesigner/DesignerScene.cpp index 10d5a9d0e11e2ab9968334ef31679beed1d95aa0..0b1a0d69e518dd64d07d632aee0d220070a13706 100644 --- a/GUI/coregui/Views/Components/SampleDesigner/DesignerScene.cpp +++ b/GUI/coregui/Views/Components/SampleDesigner/DesignerScene.cpp @@ -33,10 +33,10 @@ DesignerScene::DesignerScene(QObject *parent) setSceneRect(QRectF(-800, 0, 1600, 1600)); setBackgroundBrush(DesignerHelper::getSceneBackground()); - NodeEditor *nodeEditor = new NodeEditor(parent); - nodeEditor->install(this); - connect(nodeEditor, SIGNAL(connectionIsEstablished(NodeEditorConnection*)), this, SLOT(onEstablishedConnection(NodeEditorConnection*))); - + m_nodeEditor = new NodeEditor(parent); + m_nodeEditor->install(this); + connect(m_nodeEditor, SIGNAL(connectionIsEstablished(NodeEditorConnection*)), this, SLOT(onEstablishedConnection(NodeEditorConnection*))); + connect(m_nodeEditor, SIGNAL(selectionModeChangeRequest(int)), this, SIGNAL(selectionModeChangeRequest(int))); connect(this, SIGNAL(selectionChanged()), this, SLOT(onSceneSelectionChanged())); } diff --git a/GUI/coregui/Views/Components/SampleDesigner/DesignerScene.h b/GUI/coregui/Views/Components/SampleDesigner/DesignerScene.h index 049718122c91e5a751fcf24751a42d4162ae811c..4b4c2bbdc3d2ac6022b397dac7886957c040a94b 100644 --- a/GUI/coregui/Views/Components/SampleDesigner/DesignerScene.h +++ b/GUI/coregui/Views/Components/SampleDesigner/DesignerScene.h @@ -15,6 +15,7 @@ class QItemSelection; class NodeEditorConnection; class DesignerMimeData; class SampleViewAligner; +class NodeEditor; //! Main class which represents SessionModel on graphics scene @@ -34,6 +35,11 @@ public: IView *getViewForItem(ParameterizedItem *item) { return m_ItemToView[item]; } + NodeEditor *getNodeEditor() { return m_nodeEditor;} + +signals: + void selectionModeChangeRequest(int); + public slots: void onSceneSelectionChanged(); void onSessionSelectionChanged(const QItemSelection &, const QItemSelection &); @@ -83,6 +89,8 @@ private: //!< foreground line representing appropriate interface during lauer's movement SampleViewAligner *m_aligner; + + NodeEditor *m_nodeEditor; }; diff --git a/GUI/coregui/Views/Components/SampleDesigner/NodeEditor.cpp b/GUI/coregui/Views/Components/SampleDesigner/NodeEditor.cpp index aa0a2173d7e891a731a7344a78d3711de92489b9..44d554b13b398c205648b374dc0551a3545b09c6 100644 --- a/GUI/coregui/Views/Components/SampleDesigner/NodeEditor.cpp +++ b/GUI/coregui/Views/Components/SampleDesigner/NodeEditor.cpp @@ -1,6 +1,7 @@ #include "NodeEditor.h" #include "NodeEditorPort.h" #include "NodeEditorConnection.h" +#include "DesignerView.h" #include <QGraphicsScene> #include <QEvent> #include <QGraphicsSceneMouseEvent> @@ -47,6 +48,7 @@ bool NodeEditor::eventFilter(QObject *o, QEvent *e) QGraphicsItem *item = itemAt(me->scenePos()); if (item && item->type() == NodeEditorPort::Type) { + emit selectionModeChangeRequest(DesignerView::SimpleSelectionMode); conn = new NodeEditorConnection(0, scene); conn->setPort1((NodeEditorPort*) item); conn->setPos1(item->scenePos()); @@ -73,6 +75,8 @@ bool NodeEditor::eventFilter(QObject *o, QEvent *e) { if (conn && me->button() == Qt::LeftButton) { + emit selectionModeChangeRequest(DesignerView::RubberSelectionMode); + QGraphicsItem *item = itemAt(me->scenePos()); if (item && item->type() == NodeEditorPort::Type) { diff --git a/GUI/coregui/Views/Components/SampleDesigner/NodeEditor.h b/GUI/coregui/Views/Components/SampleDesigner/NodeEditor.h index 6996134e0b3549b32d50f4d2d7a41e48901e0637..0eaa29fa2715e411c4175c6d6d8683ee3046fa05 100644 --- a/GUI/coregui/Views/Components/SampleDesigner/NodeEditor.h +++ b/GUI/coregui/Views/Components/SampleDesigner/NodeEditor.h @@ -29,6 +29,7 @@ public: bool eventFilter(QObject *, QEvent *); signals: + void selectionModeChangeRequest(int); void connectionIsEstablished(NodeEditorConnection *); private: diff --git a/GUI/coregui/Views/Components/SampleDesigner/SampleToolBar.cpp b/GUI/coregui/Views/Components/SampleDesigner/SampleToolBar.cpp index 72e2dad11c876f6743be19f2e4132c3f242f9899..4d368c98d62d6d71350da0af1a1919764134abda 100644 --- a/GUI/coregui/Views/Components/SampleDesigner/SampleToolBar.cpp +++ b/GUI/coregui/Views/Components/SampleDesigner/SampleToolBar.cpp @@ -130,7 +130,8 @@ SampleToolBar::SampleToolBar(QWidget *parent) void SampleToolBar::onViewSelectionMode(int mode) { qDebug() << "SampleToolBar::onViewSelectionMode" << mode; - m_pointerModeGroup->button(mode)->setChecked(true); + if(mode == DesignerView::RubberSelectionMode || mode == DesignerView::HandDragMode) + m_pointerModeGroup->button(mode)->setChecked(true); } void SampleToolBar::onScaleComboChanged(const QString &scale_string) diff --git a/GUI/coregui/Views/SampleView.cpp b/GUI/coregui/Views/SampleView.cpp index 2f965851ec2513b6a2f76aaa0dda6bcde7e8d21a..926c2276133db4342febc95f67d05d11fff3395f 100644 --- a/GUI/coregui/Views/SampleView.cpp +++ b/GUI/coregui/Views/SampleView.cpp @@ -229,6 +229,8 @@ void SampleView::connectSignals() connect(m_toolBar, SIGNAL(zoomIn()), m_sampleDesigner->getView(), SLOT(zoomIn())); + connect(m_sampleDesigner->getScene(), SIGNAL(selectionModeChangeRequest(int)), m_sampleDesigner->getView(), SLOT(onSelectionMode(int))); + // connect context menu for tree view connect(m_tree_view, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(showContextMenu(const QPoint &)));