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

switch panel on activity change

parent 8a6c2859
No related branches found
No related tags found
1 merge request!2784Switch panel on activity change or selection of overlay from another Set (#1044)
Pipeline #177902 passed
...@@ -51,29 +51,29 @@ Plot2DFrame::Plot2DFrame(std::unique_ptr<DataSource>&& data_source) ...@@ -51,29 +51,29 @@ Plot2DFrame::Plot2DFrame(std::unique_ptr<DataSource>&& data_source)
splitter->setCollapsible(0, false); splitter->setCollapsible(0, false);
splitter->setCollapsible(1, false); splitter->setCollapsible(1, false);
auto* panels = new QTabWidget; m_panels = new QTabWidget;
layout->addWidget(panels); layout->addWidget(m_panels);
panels->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Minimum); m_panels->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Minimum);
panels->hide(); m_panels->hide();
int tabIndex = 0; int tabIndex = 0;
auto* axes_panel = new AxesPanel(dataSource()); auto* axes_panel = new AxesPanel(dataSource());
panels->addTab(axes_panel, "Scales"); m_panels->addTab(axes_panel, "Scales");
panels->setTabToolTip(tabIndex++, "Scales panel"); m_panels->setTabToolTip(tabIndex++, "Scales panel");
if (m_data_source->isFromData()) { if (m_data_source->isFromData()) {
auto* masks_panel = new MasksPanel([this]() -> MasksSet* { return maskSet(); }, true); auto* masks_panel = new MasksPanel([this]() -> MasksSet* { return maskSet(); }, true);
panels->addTab(masks_panel, "Masks"); m_panels->addTab(masks_panel, "Masks");
panels->setTabToolTip(tabIndex++, "Masks panel"); m_panels->setTabToolTip(tabIndex++, "Masks panel");
connect(masks_panel, &MasksPanel::deleteCurrentRequest, m_canvas2D, connect(masks_panel, &MasksPanel::deleteCurrentRequest, m_canvas2D,
&MaskEditorCanvas::deleteCurrentItem); &MaskEditorCanvas::deleteCurrentItem);
} }
auto* prjns_panel = new MasksPanel( auto* prjns_panel = new MasksPanel(
[this]() -> MasksSet* { return data2DItem() ? data2DItem()->prjnsRW() : nullptr; }, false); [this]() -> MasksSet* { return data2DItem() ? data2DItem()->prjnsRW() : nullptr; }, false);
panels->addTab(prjns_panel, "Prjns"); m_panels->addTab(prjns_panel, "Prjns");
panels->setTabToolTip(tabIndex++, "Projections panel"); m_panels->setTabToolTip(tabIndex++, "Projections panel");
connect(prjns_panel, &MasksPanel::deleteCurrentRequest, m_canvas2D, connect(prjns_panel, &MasksPanel::deleteCurrentRequest, m_canvas2D,
&MaskEditorCanvas::deleteCurrentItem); &MaskEditorCanvas::deleteCurrentItem);
...@@ -83,7 +83,7 @@ Plot2DFrame::Plot2DFrame(std::unique_ptr<DataSource>&& data_source) ...@@ -83,7 +83,7 @@ Plot2DFrame::Plot2DFrame(std::unique_ptr<DataSource>&& data_source)
//... Connections //... Connections
connect(toolbar->actions()->toggle_properties_panel, &QAction::triggered, connect(toolbar->actions()->toggle_properties_panel, &QAction::triggered,
[panels] { panels->setVisible(!panels->isVisible()); }); [this] { m_panels->setVisible(!m_panels->isVisible()); });
connect(toolbar->actions()->save_plot, &QAction::triggered, m_canvas2D, connect(toolbar->actions()->save_plot, &QAction::triggered, m_canvas2D,
&MaskEditorCanvas::exportPlot); &MaskEditorCanvas::exportPlot);
...@@ -117,6 +117,16 @@ Plot2DFrame::Plot2DFrame(std::unique_ptr<DataSource>&& data_source) ...@@ -117,6 +117,16 @@ Plot2DFrame::Plot2DFrame(std::unique_ptr<DataSource>&& data_source)
connect(m_canvas1D, &ProjectedGraphsCanvas::changeActivityRequest, toolbar, connect(m_canvas1D, &ProjectedGraphsCanvas::changeActivityRequest, toolbar,
&Data2DToolbar::onProjectionTabChange); &Data2DToolbar::onProjectionTabChange);
connect(toolbar, &Data2DToolbar::activityChanged, [this](Canvas2DMode::Flag mode) {
if (!m_data_source->isFromData() || m_panels->currentIndex() == 0)
return;
if (Canvas2DMode::isPrjn(mode))
m_panels->setCurrentIndex(2);
if (Canvas2DMode::isMask(mode))
m_panels->setCurrentIndex(1);
});
// subscription type depends on the context // subscription type depends on the context
if (m_data_source->isFromData()) if (m_data_source->isFromData())
connect(gDoc->datafiles(), &DatafilesSet::setChanged, this, &Plot2DFrame::updateFrame); connect(gDoc->datafiles(), &DatafilesSet::setChanged, this, &Plot2DFrame::updateFrame);
...@@ -160,5 +170,12 @@ void Plot2DFrame::updateFrame() ...@@ -160,5 +170,12 @@ void Plot2DFrame::updateFrame()
m_canvas2D->updateCanvas(data2DItem()); m_canvas2D->updateCanvas(data2DItem());
m_canvas1D->setData2DItem(data2DItem()); m_canvas1D->setData2DItem(data2DItem());
disconnect(m_canvas2D->getScene(), &MaskGraphicsScene::switchPanelRequest, nullptr, nullptr);
connect(m_canvas2D->getScene(), &MaskGraphicsScene::switchPanelRequest,
[this](bool to_projection) {
if (m_data_source->isFromData() && m_panels->currentIndex() != 0)
m_panels->setCurrentIndex(1 + int(to_projection));
});
show(); show();
} }
...@@ -21,6 +21,7 @@ class Data2DItem; ...@@ -21,6 +21,7 @@ class Data2DItem;
class MaskEditorCanvas; class MaskEditorCanvas;
class MasksSet; class MasksSet;
class ProjectedGraphsCanvas; class ProjectedGraphsCanvas;
class QTabWidget;
//! Main widget to embed projections editor for Data2DItem. //! Main widget to embed projections editor for Data2DItem.
...@@ -36,6 +37,7 @@ private: ...@@ -36,6 +37,7 @@ private:
MaskEditorCanvas* m_canvas2D; //!< canvas with color map at the top MaskEditorCanvas* m_canvas2D; //!< canvas with color map at the top
ProjectedGraphsCanvas* m_canvas1D; //!< bottom widget to draw projections plot ProjectedGraphsCanvas* m_canvas1D; //!< bottom widget to draw projections plot
QTabWidget* m_panels;
}; };
#endif // BORNAGAIN_GUI_VIEW_FRAME_PLOT2DFRAME_H #endif // BORNAGAIN_GUI_VIEW_FRAME_PLOT2DFRAME_H
...@@ -557,6 +557,9 @@ void MaskGraphicsScene::onSceneSelectionChanged() ...@@ -557,6 +557,9 @@ void MaskGraphicsScene::onSceneSelectionChanged()
ASSERT(line_item); ASSERT(line_item);
emit lineItemMoved(line_item); emit lineItemMoved(line_item);
} }
// switch panel
emit switchPanelRequest(current_set == m_prjns);
} }
connectMaskSet(true); connectMaskSet(true);
connectProjSet(true); connectProjSet(true);
......
...@@ -56,6 +56,7 @@ signals: ...@@ -56,6 +56,7 @@ signals:
void lineItemProcessed(); void lineItemProcessed();
void lineItemMoved(const LineItem* sender); void lineItemMoved(const LineItem* sender);
void lineItemDeleted(const LineItem* sender); void lineItemDeleted(const LineItem* sender);
void switchPanelRequest(bool to_projection);
public slots: public slots:
void onActivityChanged(Canvas2DMode::Flag mode); void onActivityChanged(Canvas2DMode::Flag mode);
......
...@@ -38,6 +38,12 @@ inline bool basedOnRectangle(Flag m) ...@@ -38,6 +38,12 @@ inline bool basedOnRectangle(Flag m)
return m == RECTANGLE || m == ELLIPSE || m == ROI; return m == RECTANGLE || m == ELLIPSE || m == ROI;
} }
inline bool isMask(Flag m)
{
return m == RECTANGLE || m == POLYGON || m == VERTICAL_MASK || m == HORIZONTAL_MASK
|| m == ELLIPSE || m == ROI || m == MASKALL;
}
inline bool isLineMask(Flag m) inline bool isLineMask(Flag m)
{ {
return m == VERTICAL_MASK || m == HORIZONTAL_MASK; return m == VERTICAL_MASK || m == HORIZONTAL_MASK;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment