Skip to content
Snippets Groups Projects
Commit 6da30b7e authored by Mikhail Svechnikov's avatar Mikhail Svechnikov
Browse files

moving projection switches tab

parent 78088fe8
No related branches found
No related tags found
1 merge request!1339GUI: fix masks and projections
...@@ -114,7 +114,7 @@ void IntensityDataProjectionsWidget::setup_connections() ...@@ -114,7 +114,7 @@ void IntensityDataProjectionsWidget::setup_connections()
{ {
// tool panel request is propagated from editorActions to this MaskEditor // tool panel request is propagated from editorActions to this MaskEditor
connect(m_editorActions, &ProjectionsEditorActions::resetViewRequest, m_projectionsCanvas, connect(m_editorActions, &ProjectionsEditorActions::resetViewRequest, m_projectionsCanvas,
&ProjectionsEditorCanvas::onResetViewRequest); &ProjectionsEditorCanvas::onResetViewRequest, Qt::UniqueConnection);
// tool panel request is propagated from editorActions to this MaskEditor // tool panel request is propagated from editorActions to this MaskEditor
connect(m_editorActions, &ProjectionsEditorActions::propertyPanelRequest, connect(m_editorActions, &ProjectionsEditorActions::propertyPanelRequest,
...@@ -122,27 +122,31 @@ void IntensityDataProjectionsWidget::setup_connections() ...@@ -122,27 +122,31 @@ void IntensityDataProjectionsWidget::setup_connections()
// selection/drawing activity is propagated from Toolbar to graphics scene // selection/drawing activity is propagated from Toolbar to graphics scene
connect(m_toolbar, &ProjectionsToolbar::activityModeChanged, m_projectionsCanvas, connect(m_toolbar, &ProjectionsToolbar::activityModeChanged, m_projectionsCanvas,
&ProjectionsEditorCanvas::onActivityModeChanged); &ProjectionsEditorCanvas::onActivityModeChanged, Qt::UniqueConnection);
// selection/drawing activity is propagated from Toolbar to Projections Widget // selection/drawing activity is propagated from Toolbar to Projections Widget
connect(m_toolbar, &ProjectionsToolbar::activityModeChanged, m_projectionsWidget, connect(m_toolbar, &ProjectionsToolbar::activityModeChanged, m_projectionsWidget,
&ProjectionsWidget::onActivityModeChanged); &ProjectionsWidget::onActivityModeChanged, Qt::UniqueConnection);
// click on projections tab is propagated to tool bar // click on projections tab is propagated to tool bar
connect(m_projectionsWidget, &ProjectionsWidget::changeActivityRequest, m_toolbar, connect(m_projectionsWidget, &ProjectionsWidget::changeActivityRequest, m_toolbar,
&ProjectionsToolbar::onProjectionTabChange); &ProjectionsToolbar::onProjectionTabChange, Qt::UniqueConnection);
// Delete request is propagated from canvas to actions // Delete request is propagated from canvas to actions
connect(m_projectionsCanvas, &ProjectionsEditorCanvas::deleteSelectedRequest, m_editorActions, connect(m_projectionsCanvas, &ProjectionsEditorCanvas::deleteSelectedRequest, m_editorActions,
&ProjectionsEditorActions::onDeleteAction); &ProjectionsEditorActions::onDeleteAction, Qt::UniqueConnection);
// moving projection automatically switches projections tab
connect(m_projectionsCanvas, &ProjectionsEditorCanvas::changeProjectionsTabRequest, m_projectionsWidget,
&ProjectionsWidget::onActivityModeChanged, Qt::UniqueConnection);
// space bar push (request for zoom mode) is propagated from graphics view to Toolbar // space bar push (request for zoom mode) is propagated from graphics view to Toolbar
connect(m_projectionsCanvas, &ProjectionsEditorCanvas::changeActivityRequest, m_toolbar, connect(m_projectionsCanvas, &ProjectionsEditorCanvas::changeActivityRequest, m_toolbar,
&ProjectionsToolbar::onChangeActivityRequest); &ProjectionsToolbar::onChangeActivityRequest, Qt::UniqueConnection);
// ColorMap margins changed, canvas -> projection widget // ColorMap margins changed, canvas -> projection widget
connect(m_projectionsCanvas, &ProjectionsEditorCanvas::marginsChanged, m_projectionsWidget, connect(m_projectionsCanvas, &ProjectionsEditorCanvas::marginsChanged, m_projectionsWidget,
&ProjectionsWidget::onMarginsChanged); &ProjectionsWidget::onMarginsChanged, Qt::UniqueConnection);
m_toolbar->onChangeActivityRequest(MaskEditorFlags::HORIZONTAL_LINE_MODE); m_toolbar->onChangeActivityRequest(MaskEditorFlags::HORIZONTAL_LINE_MODE);
} }
...@@ -47,6 +47,10 @@ ProjectionsEditorCanvas::ProjectionsEditorCanvas(QWidget* parent) ...@@ -47,6 +47,10 @@ ProjectionsEditorCanvas::ProjectionsEditorCanvas(QWidget* parent)
&ProjectionsEditorCanvas::changeActivityRequest); &ProjectionsEditorCanvas::changeActivityRequest);
connect(m_view, &MaskGraphicsView::deleteSelectedRequest, this, connect(m_view, &MaskGraphicsView::deleteSelectedRequest, this,
&ProjectionsEditorCanvas::deleteSelectedRequest); &ProjectionsEditorCanvas::deleteSelectedRequest);
// automatically switch to the appropriate projection tab
connect(m_scene, &MaskGraphicsScene::lineItemMoved, this,
&ProjectionsEditorCanvas::onLineItemMoved, Qt::UniqueConnection);
} }
void ProjectionsEditorCanvas::setContext(IntensityDataItem* intensityItem) void ProjectionsEditorCanvas::setContext(IntensityDataItem* intensityItem)
...@@ -64,9 +68,9 @@ void ProjectionsEditorCanvas::setContext(IntensityDataItem* intensityItem) ...@@ -64,9 +68,9 @@ void ProjectionsEditorCanvas::setContext(IntensityDataItem* intensityItem)
// notify ProjectionPlot about the changes // notify ProjectionPlot about the changes
connect(m_scene, &MaskGraphicsScene::lineItemProcessed, intensityItem, connect(m_scene, &MaskGraphicsScene::lineItemProcessed, intensityItem,
&IntensityDataItem::projectionCreated, Qt::UniqueConnection); &IntensityDataItem::projectionCreated, Qt::UniqueConnection);
connect(m_scene, &MaskGraphicsScene::lineItemMoved, intensityItem, connect(m_scene, &MaskGraphicsScene::lineItemMoved, intensityItem,
&IntensityDataItem::projectionPositionChanged, Qt::UniqueConnection); &IntensityDataItem::projectionPositionChanged, Qt::UniqueConnection);
connect(m_scene, &MaskGraphicsScene::lineItemDeleted, intensityItem, connect(m_scene, &MaskGraphicsScene::lineItemDeleted, intensityItem,
&IntensityDataItem::projectionGone, Qt::UniqueConnection); &IntensityDataItem::projectionGone, Qt::UniqueConnection);
...@@ -109,10 +113,6 @@ void ProjectionsEditorCanvas::onEnteringColorMap() ...@@ -109,10 +113,6 @@ void ProjectionsEditorCanvas::onEnteringColorMap()
m_liveProjection->setIsVisibleValue(false); m_liveProjection->setIsVisibleValue(false);
m_liveProjection->setParent(this); m_liveProjection->setParent(this);
// TODO: correct this vvv
// m_liveProjection->setParentAndModel(
// this, m_intensityDataItem->projectionContainerItem()->model());
// notify ProjectionPlot about the changes // notify ProjectionPlot about the changes
connect(m_liveProjection, &MaskItem::maskGeometryChanged, m_intensityDataItem, connect(m_liveProjection, &MaskItem::maskGeometryChanged, m_intensityDataItem,
&IntensityDataItem::projectionPositionChanged, Qt::UniqueConnection); &IntensityDataItem::projectionPositionChanged, Qt::UniqueConnection);
...@@ -131,11 +131,6 @@ void ProjectionsEditorCanvas::onLeavingColorMap() ...@@ -131,11 +131,6 @@ void ProjectionsEditorCanvas::onLeavingColorMap()
if (m_liveProjection) { if (m_liveProjection) {
disconnect(m_liveProjection, nullptr, m_intensityDataItem, nullptr); disconnect(m_liveProjection, nullptr, m_intensityDataItem, nullptr);
emit m_intensityDataItem->projectionGone(m_liveProjection); emit m_intensityDataItem->projectionGone(m_liveProjection);
// TODO: check if calling these SessionItem method is necessary
// m_liveProjection->itemParent()->takeRow(
// m_liveProjection->itemParent()->rowOfChild(m_liveProjection));
delete m_liveProjection; delete m_liveProjection;
m_liveProjection = nullptr; m_liveProjection = nullptr;
} }
...@@ -174,6 +169,14 @@ void ProjectionsEditorCanvas::onActivityModeChanged(MaskEditorFlags::Activity va ...@@ -174,6 +169,14 @@ void ProjectionsEditorCanvas::onActivityModeChanged(MaskEditorFlags::Activity va
onLeavingColorMap(); onLeavingColorMap();
} }
void ProjectionsEditorCanvas::onLineItemMoved(MaskItemObject* sender)
{
if(dynamic_cast<HorizontalLineItem*>(sender) && (m_currentActivity != MaskEditorFlags::VERTICAL_LINE_MODE))
emit changeProjectionsTabRequest(MaskEditorFlags::HORIZONTAL_LINE_MODE);
if(dynamic_cast<VerticalLineItem*>(sender) && (m_currentActivity != MaskEditorFlags::HORIZONTAL_LINE_MODE))
emit changeProjectionsTabRequest(MaskEditorFlags::VERTICAL_LINE_MODE);
}
void ProjectionsEditorCanvas::setColorMap(ColorMap* colorMap) void ProjectionsEditorCanvas::setColorMap(ColorMap* colorMap)
{ {
ASSERT(colorMap); ASSERT(colorMap);
......
...@@ -27,6 +27,7 @@ class IntensityDataItem; ...@@ -27,6 +27,7 @@ class IntensityDataItem;
class ColorMap; class ColorMap;
class PlotStatusLabel; class PlotStatusLabel;
class MaskItem; class MaskItem;
class MaskItemObject;
//! Holds a graphics scene to draw projections on top of ColorMap. Being a part //! Holds a graphics scene to draw projections on top of ColorMap. Being a part
//! of ProjectionEditor, provides interaction logic between graphics scene and ProjectionsWidget. //! of ProjectionEditor, provides interaction logic between graphics scene and ProjectionsWidget.
...@@ -46,6 +47,7 @@ public: ...@@ -46,6 +47,7 @@ public:
void setSelectionModel(QItemSelectionModel* model); void setSelectionModel(QItemSelectionModel* model);
signals: signals:
void changeProjectionsTabRequest(MaskEditorFlags::Activity);
void changeActivityRequest(MaskEditorFlags::Activity); void changeActivityRequest(MaskEditorFlags::Activity);
void deleteSelectedRequest(); void deleteSelectedRequest();
void marginsChanged(double left, double right); void marginsChanged(double left, double right);
...@@ -58,6 +60,7 @@ public slots: ...@@ -58,6 +60,7 @@ public slots:
void onActivityModeChanged(MaskEditorFlags::Activity value); void onActivityModeChanged(MaskEditorFlags::Activity value);
private: private:
void onLineItemMoved(MaskItemObject *sender);
void setColorMap(ColorMap* colorMap); void setColorMap(ColorMap* colorMap);
void setConnected(bool isConnected); void setConnected(bool isConnected);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment