diff --git a/GUI/Model/Mask/MasksQModel.cpp b/GUI/Model/Mask/MasksQModel.cpp index aa54a5d196d92299698c5544f3fa049a49dae2f1..66568687961ae6cd4f60737a15190f0dc039fe60 100644 --- a/GUI/Model/Mask/MasksQModel.cpp +++ b/GUI/Model/Mask/MasksQModel.cpp @@ -22,7 +22,6 @@ MasksQModel::MasksQModel(MasksSet* set) : m_masks(set) - , m_selection_model(std::make_unique<QItemSelectionModel>(this)) { } @@ -113,16 +112,19 @@ MaskItem* MasksQModel::itemForIndex(const QModelIndex& index) const void MasksQModel::moveUp() { + /* for (const QModelIndex& itemIndex : m_selection_model->selectedIndexes()) { int row = itemIndex.row(); int new_row = row - 1; if (new_row >= 0 && new_row < rowCount({})) moveMask(row, new_row); } + */ } void MasksQModel::moveDown() { + /* for (const QModelIndex& itemIndex : m_selection_model->selectedIndexes()) { int row = itemIndex.row(); int new_row = row + 1; @@ -131,4 +133,5 @@ void MasksQModel::moveDown() // The result should be the same, but rising doesn't work for an unknown reason moveMask(new_row, row); } + */ } diff --git a/GUI/Model/Mask/MasksQModel.h b/GUI/Model/Mask/MasksQModel.h index 6c94c5b67842662cd2a4597d5b359560e133a250..6f1d6200b11ec1e9d1627fe107842e0dbbd17bc6 100644 --- a/GUI/Model/Mask/MasksQModel.h +++ b/GUI/Model/Mask/MasksQModel.h @@ -16,7 +16,6 @@ #define BORNAGAIN_GUI_MODEL_MASK_MASKSQMODEL_H #include <QAbstractListModel> -#include <QItemSelectionModel> #include <QModelIndex> #include <QVariant> @@ -46,14 +45,11 @@ public: QModelIndex indexOfItem(const OverlayItem* item) const; // TODO: change this to MaskItem* MaskItem* itemForIndex(const QModelIndex& index) const; - QItemSelectionModel* maskSelectionModel() { return m_selection_model.get(); } - MasksSet* set() { return m_masks; } const MasksSet* set() const { return m_masks; } private: MasksSet* m_masks; - std::unique_ptr<QItemSelectionModel> m_selection_model; }; #endif // BORNAGAIN_GUI_MODEL_MASK_MASKSQMODEL_H diff --git a/GUI/View/Scene/MaskGraphicsScene.cpp b/GUI/View/Scene/MaskGraphicsScene.cpp index 2e270280f0f418b1e484e31a49957f4ef028a744..4ec1ff2213a95c46f8ad3f9bc04dd41f2a3ba040 100644 --- a/GUI/View/Scene/MaskGraphicsScene.cpp +++ b/GUI/View/Scene/MaskGraphicsScene.cpp @@ -49,7 +49,6 @@ MaskGraphicsScene::MaskGraphicsScene() , m_drawing_in_progress(false) , m_mask_value(true) { - connect(this, &QGraphicsScene::selectionChanged, [this] { onSceneSelectionChanged(); }); } MaskGraphicsScene::~MaskGraphicsScene() = default; @@ -57,9 +56,6 @@ MaskGraphicsScene::~MaskGraphicsScene() = default; void MaskGraphicsScene::associateItems(Data2DItem* data_item, MasksQModel* masks_qmodel) { ASSERT(masks_qmodel); - m_selection_model = masks_qmodel->maskSelectionModel(); - connect(m_selection_model, &QItemSelectionModel::selectionChanged, this, - &MaskGraphicsScene::onSessionSelectionChanged, Qt::UniqueConnection); if (!data_item) return; @@ -73,8 +69,6 @@ void MaskGraphicsScene::associateItems(Data2DItem* data_item, MasksQModel* masks connect(masks_qmodel, &QAbstractListModel::modelAboutToBeReset, this, &MaskGraphicsScene::resetScene); connect(masks_qmodel, &QAbstractListModel::rowsInserted, this, &MaskGraphicsScene::updateScene); - connect(masks_qmodel, &QAbstractListModel::rowsAboutToBeRemoved, this, - &MaskGraphicsScene::onRowsAboutToBeRemoved); connect(masks_qmodel, &QAbstractListModel::rowsRemoved, this, &MaskGraphicsScene::updateScene); connect(masks_qmodel, &QAbstractListModel::modelReset, this, &MaskGraphicsScene::updateScene); connect(masks_qmodel, &QAbstractListModel::rowsMoved, this, &MaskGraphicsScene::updateScene); @@ -108,11 +102,6 @@ void MaskGraphicsScene::onActivityChanged(Canvas2DMode::Flag mode) const bool zoomMode = m_mode == Canvas2DMode::PAN_ZOOM; - // Sets the state of all views in pan&zoom mode. - // In pan&zoom mode, the selection is removed, all items cannot receive mouse clicks, and all - // events are propagated down to ColorMap plot. - if (zoomMode) - m_selection_model->clearSelection(); for (IOverlay* overlay : m_mask2overlay.values()) overlay->setAcceptedMouseButtons(zoomMode ? Qt::NoButton : Qt::LeftButton); m_proxy->setZooming(zoomMode); @@ -126,15 +115,6 @@ void MaskGraphicsScene::onActivityChanged(Canvas2DMode::Flag mode) } } -void MaskGraphicsScene::onRowsAboutToBeRemoved(const QModelIndex&, int first, int last) -{ - m_block_selection = true; - for (int irow = first; irow <= last; ++irow) - if (MaskItem* maskItem = m_masks_qmodel->set()->at(irow)) - removeOverlay(maskItem); - m_block_selection = false; -} - void MaskGraphicsScene::cancelCurrentDrawing() { if (m_drawing_in_progress) { @@ -148,25 +128,6 @@ void MaskGraphicsScene::cancelCurrentDrawing() // private slots // ************************************************************************************************ -//! Propagates selection from model to scene. - -void MaskGraphicsScene::onSessionSelectionChanged(const QItemSelection&, const QItemSelection&) -{ - if (m_block_selection) - return; - - if (!m_selection_model) - return; - - m_block_selection = true; - - for (auto it = m_mask2overlay.begin(); it != m_mask2overlay.end(); ++it) { - QModelIndex index = m_masks_qmodel->indexOfItem(it.key()); - if (index.isValid()) - it.value()->setSelected(m_selection_model->isSelected(index)); - } - m_block_selection = false; -} // ************************************************************************************************ // private (override QGraphicsScene) @@ -224,7 +185,6 @@ void MaskGraphicsScene::mouseReleaseEvent(QGraphicsSceneMouseEvent* event) if (!m_drawing_in_progress) QGraphicsScene::mouseReleaseEvent(event); else if (Canvas2DMode::isRectangleShapeMode(m_mode)) { - clearSelection(); if (m_active_mask) { // drawing ended up with item drawn, let's make it selected if (IOverlay* overlay = m_mask2overlay[m_active_mask]) @@ -289,8 +249,6 @@ void MaskGraphicsScene::resetScene() { m_block_selection = true; - clearSelection(); - clear(); m_mask2overlay.clear(); m_proxy.release(); @@ -317,31 +275,6 @@ void MaskGraphicsScene::updateScene() } } -//! Propagates selection from scene to model. - -void MaskGraphicsScene::onSceneSelectionChanged() -{ - if (m_block_selection) - return; - - if (!m_selection_model) - return; - - m_block_selection = true; - - m_selection_model->clearSelection(); - - for (QGraphicsItem* graphicsItem : selectedItems()) { - if (auto* overlay = dynamic_cast<IOverlay*>(graphicsItem)) { - QModelIndex itemIndex = m_masks_qmodel->indexOfItem(overlay->parameterizedItem()); - ASSERT(itemIndex.isValid()); - if (!m_selection_model->isSelected(itemIndex)) - m_selection_model->select(itemIndex, QItemSelectionModel::Select); - } - } - m_block_selection = false; -} - //! Updates proxy widget for intensity data item. void MaskGraphicsScene::updateProxyWidget() @@ -515,9 +448,6 @@ void MaskGraphicsScene::processPolygonItem(QGraphicsSceneMouseEvent* event) m_masks_qmodel->pushItem(new_poly); new_poly->setMaskValue(m_mask_value); m_active_mask = new_poly; - m_selection_model->clearSelection(); - m_selection_model->select(m_masks_qmodel->indexOfItem(m_active_mask), - QItemSelectionModel::Select); m_masks_qmodel->set()->updateMaskNames(); } ASSERT(dynamic_cast<PolygonItem*>(m_active_mask)); @@ -549,9 +479,6 @@ void MaskGraphicsScene::processLineItem(QGraphicsSceneMouseEvent* event) ASSERT(m_active_mask); emit m_active_mask->maskGeometryChanged(); - m_selection_model->clearSelection(); - m_selection_model->select(m_masks_qmodel->indexOfItem(m_active_mask), - QItemSelectionModel::Select); m_masks_qmodel->set()->updateMaskNames(); m_active_mask->setMaskValue(m_mask_value); @@ -584,7 +511,6 @@ void MaskGraphicsScene::processFullframeItem(QGraphicsSceneMouseEvent* event) auto* item = new FullframeItem; m_masks_qmodel->pushItem(item); m_active_mask = item; - m_selection_model->clearSelection(); setDrawingInProgress(false); } diff --git a/GUI/View/Scene/MaskGraphicsScene.h b/GUI/View/Scene/MaskGraphicsScene.h index 81e444b7779c458405b045cc7ae31cffbe0d677d..87914e86c6d2d0822c36e812169d2873fb72d720 100644 --- a/GUI/View/Scene/MaskGraphicsScene.h +++ b/GUI/View/Scene/MaskGraphicsScene.h @@ -17,8 +17,7 @@ #include "GUI/View/Setup/Canvas2DMode.h" #include <QGraphicsScene> -#include <QItemSelection> -#include <QItemSelectionModel> +#include <QMap> #include <memory> class ColorMap; @@ -54,11 +53,6 @@ signals: public slots: void onActivityChanged(Canvas2DMode::Flag mode); - void onRowsAboutToBeRemoved(const QModelIndex&, int first, int last); - -private slots: - void onSessionSelectionChanged(const QItemSelection& /* selected */, - const QItemSelection& /* deselected */); private: void mousePressEvent(QGraphicsSceneMouseEvent* event) override; @@ -69,7 +63,6 @@ private: void resetScene(); void updateScene(); - void onSceneSelectionChanged(); void updateProxyWidget(); void updateOverlays(); IOverlay* registerOverlay(OverlayItem* item); @@ -97,7 +90,6 @@ private: std::unique_ptr<ColorMap> m_plot; std::unique_ptr<MaskGraphicsProxy> m_proxy; MasksQModel* m_masks_qmodel = nullptr; - QItemSelectionModel* m_selection_model = nullptr; QMap<const OverlayItem*, IOverlay*> m_mask2overlay; bool m_block_selection = false; bool m_mouse_is_pressed = false;