diff --git a/Modules/QtWidgets/include/QmitkAbstractDataStorageViewWidget.h b/Modules/QtWidgets/include/QmitkAbstractDataStorageInspector.h similarity index 75% rename from Modules/QtWidgets/include/QmitkAbstractDataStorageViewWidget.h rename to Modules/QtWidgets/include/QmitkAbstractDataStorageInspector.h index d68ad25ab3..f620e18c33 100644 --- a/Modules/QtWidgets/include/QmitkAbstractDataStorageViewWidget.h +++ b/Modules/QtWidgets/include/QmitkAbstractDataStorageInspector.h @@ -1,136 +1,126 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical Image Computing. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ -#ifndef QMITKABSTRACTDATASTORAGEVIEWWIDGET_H -#define QMITKABSTRACTDATASTORAGEVIEWWIDGET_H +#ifndef QMITKABSTRACTDATASTORAGEINSPECTOR_H +#define QMITKABSTRACTDATASTORAGEINSPECTOR_H #include #include // mitk core #include #include // qt #include class QAbstractItemVew; /* -* @brief This abstract class extends the 'QAbstractItemModel' to accept an 'mitk::DataStorage' and a 'mitk::NodePredicateBase'., -* It registers itself as a node event listener of the data storage. -* The 'QmitkAbstractDataStorageViewWidget' provides three empty functions, 'NodeAdded', 'NodeChanged' and 'NodeRemoved', that -* may be implemented by the subclasses. These functions allow to react to the 'AddNodeEvent', 'ChangedNodeEvent' and -* 'RemoveNodeEvent' of the data storage. This might be useful to force an update on the custom view to correctly -* represent the content of the data storage. -* -* A concrete implementations of this class is used to store the temporarily shown data nodes of the data storage. -* These nodes may be a subset of all the nodes inside the data storage, if a specific node predicate is set. -* -* A model that implements this class has to return mitk::DataNode::Pointer objects for model indexes when the -* role is QmitkDataNodeRole. +* @brief This abstract class for convienient widgets that over a specific view onto a given DataStorage instance to +* inspect its contents. One may also get the selection in this inspector of the data storage. */ -class MITKQTWIDGETS_EXPORT QmitkAbstractDataStorageViewWidget : public QWidget +class MITKQTWIDGETS_EXPORT QmitkAbstractDataStorageInspector : public QWidget { Q_OBJECT public: - virtual ~QmitkAbstractDataStorageViewWidget(); + virtual ~QmitkAbstractDataStorageInspector(); /* * @brief Sets the data storage that will be used /monitored by widget. * * @par dataStorage A pointer to the data storage to set. */ void SetDataStorage(mitk::DataStorage* dataStorage); /* * @brief Sets the node predicate and updates the widget, according to the node predicate. * * @par nodePredicate A pointer to node predicate. */ virtual void SetNodePredicate(mitk::NodePredicateBase* nodePredicate); mitk::NodePredicateBase* GetNodePredicate() const; using NodeList = QList; NodeList GetSelectedNodes() const; virtual QAbstractItemView* GetView() = 0; virtual QAbstractItemView* GetView() const = 0; bool GetSelectOnlyVisibleNodes() const; using SelectionMode = QAbstractItemView::SelectionMode; virtual void SetSelectionMode(SelectionMode mode) = 0; virtual SelectionMode GetSelectionMode() const = 0; Q_SIGNALS: /* * @brief A signal that will be emitted if the selected node has changed. * * @par nodes A list of data nodes that are newly selected. */ void CurrentSelectionChanged(NodeList nodes); public Q_SLOTS: /* * @brief Change the selection modus of the item view's selection model. * * If true, an incoming selection will be filtered (reduced) to only those nodes that are visible by the current view. * An outgoing selection can then at most contain the filtered nodes. * If false, the incoming non-visible selection will be stored and later added to the outgoing selection, * to include the original selection that could not be modified. * The part of the original selection, that is non-visible are the nodes that are not * * @par selectOnlyVisibleNodes The bool value to define the selection modus. */ void SetSelectOnlyVisibleNodes(bool selectOnlyVisibleNodes); /* * @brief Transform a list of data nodes into a model selection and set this as a new selection of the * selection model of the private member item view. * * The function filters the given list of nodes according to the 'm_SelectOnlyVisibleNodes' member variable. If * necessary, the non-visible nodes are stored. This is done if 'm_SelectOnlyVisibleNodes' is false: In this case * the selection may be filtered and only a subset of the selected nodes may be visible and therefore (de-)selectable * in the data storage viewer. By storing the non-visible nodes it is possible to send the new, modified selection * but also include the selected nodes from the original selection that could not be modified (see 'SetSelectOnlyVisibleNodes'). * * @par nodes A list of data nodes that should be newly selected. */ void SetCurrentSelection(NodeList selectedNodes); protected Q_SLOTS: void OnSelectionChanged(NodeList selectedNodes); protected: /** Helper function is called if data storage or predicate is changed to (re) inizialze the widget correctly. Implement the function in derived classes.*/ virtual void Initialize() = 0; mitk::WeakPointer m_DataStorage; mitk::NodePredicateBase::Pointer m_NodePredicate; std::unique_ptr m_Connector; - QmitkAbstractDataStorageViewWidget(QWidget* parent = nullptr); + QmitkAbstractDataStorageInspector(QWidget* parent = nullptr); }; #endif // QMITKABSTRACTDATASTORAGEMODEL_H diff --git a/Modules/QtWidgets/include/QmitkDataStorageListViewWidget.h b/Modules/QtWidgets/include/QmitkDataStorageListInspector.h similarity index 73% rename from Modules/QtWidgets/include/QmitkDataStorageListViewWidget.h rename to Modules/QtWidgets/include/QmitkDataStorageListInspector.h index dbff81266e..978b7b0f8d 100644 --- a/Modules/QtWidgets/include/QmitkDataStorageListViewWidget.h +++ b/Modules/QtWidgets/include/QmitkDataStorageListInspector.h @@ -1,50 +1,50 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical Image Computing. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #ifndef QMITKDATASTORAGELISTVIEWWIDGET_H #define QMITKDATASTORAGELISTVIEWWIDGET_H #include -#include +#include #include -#include "ui_QmitkDataStorageListViewWidget.h" +#include "ui_QmitkDataStorageListInspector.h" /* -* @brief This is a widget to offer a simple list view on a data storage. +* @brief This is an inspector that offers a simple list view on a data storage. */ -class MITKQTWIDGETS_EXPORT QmitkDataStorageListViewWidget : public QmitkAbstractDataStorageViewWidget +class MITKQTWIDGETS_EXPORT QmitkDataStorageListInspector : public QmitkAbstractDataStorageInspector { Q_OBJECT public: - QmitkDataStorageListViewWidget(QWidget* parent = nullptr); + QmitkDataStorageListInspector(QWidget* parent = nullptr); virtual QAbstractItemView* GetView() override; virtual QAbstractItemView* GetView() const override; virtual void SetSelectionMode(SelectionMode mode) override; virtual SelectionMode GetSelectionMode() const override; protected: virtual void Initialize() override; QmitkAbstractDataStorageModel* m_StorageModel; - Ui_QmitkDataStorageListViewWidget m_Controls; + Ui_QmitkDataStorageListInspector m_Controls; }; #endif // QMITKABSTRACTDATASTORAGEMODEL_H diff --git a/Modules/QtWidgets/src/QmitkAbstractDataStorageViewWidget.cpp b/Modules/QtWidgets/src/QmitkAbstractDataStorageInspector.cpp similarity index 56% rename from Modules/QtWidgets/src/QmitkAbstractDataStorageViewWidget.cpp rename to Modules/QtWidgets/src/QmitkAbstractDataStorageInspector.cpp index 316e60cb1f..d42d6846f8 100644 --- a/Modules/QtWidgets/src/QmitkAbstractDataStorageViewWidget.cpp +++ b/Modules/QtWidgets/src/QmitkAbstractDataStorageInspector.cpp @@ -1,83 +1,83 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical Image Computing. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ -#include +#include -QmitkAbstractDataStorageViewWidget::QmitkAbstractDataStorageViewWidget(QWidget* parent/* = nullptr*/) +QmitkAbstractDataStorageInspector::QmitkAbstractDataStorageInspector(QWidget* parent/* = nullptr*/) : QWidget(parent) , m_NodePredicate(nullptr) { m_Connector = std::make_unique(); - connect(m_Connector.get(), &QmitkModelViewSelectionConnector::CurrentSelectionChanged, this, &QmitkAbstractDataStorageViewWidget::OnSelectionChanged); + connect(m_Connector.get(), &QmitkModelViewSelectionConnector::CurrentSelectionChanged, this, &QmitkAbstractDataStorageInspector::OnSelectionChanged); } -QmitkAbstractDataStorageViewWidget::~QmitkAbstractDataStorageViewWidget() +QmitkAbstractDataStorageInspector::~QmitkAbstractDataStorageInspector() { } -void QmitkAbstractDataStorageViewWidget::SetDataStorage(mitk::DataStorage* dataStorage) +void QmitkAbstractDataStorageInspector::SetDataStorage(mitk::DataStorage* dataStorage) { if (m_DataStorage != dataStorage) { m_DataStorage = dataStorage; if (!m_DataStorage.IsExpired()) { this->Initialize(); } } } -void QmitkAbstractDataStorageViewWidget::SetNodePredicate(mitk::NodePredicateBase* nodePredicate) +void QmitkAbstractDataStorageInspector::SetNodePredicate(mitk::NodePredicateBase* nodePredicate) { if (m_NodePredicate != nodePredicate) { m_NodePredicate = nodePredicate; this->Initialize(); } } -mitk::NodePredicateBase* QmitkAbstractDataStorageViewWidget::GetNodePredicate() const +mitk::NodePredicateBase* QmitkAbstractDataStorageInspector::GetNodePredicate() const { return m_NodePredicate; } -QmitkAbstractDataStorageViewWidget::NodeList QmitkAbstractDataStorageViewWidget::GetSelectedNodes() const +QmitkAbstractDataStorageInspector::NodeList QmitkAbstractDataStorageInspector::GetSelectedNodes() const { return m_Connector->GetSelectedNodes(); }; -bool QmitkAbstractDataStorageViewWidget::GetSelectOnlyVisibleNodes() const +bool QmitkAbstractDataStorageInspector::GetSelectOnlyVisibleNodes() const { return m_Connector->GetSelectOnlyVisibleNodes(); }; -void QmitkAbstractDataStorageViewWidget::SetSelectOnlyVisibleNodes(bool selectOnlyVisibleNodes) +void QmitkAbstractDataStorageInspector::SetSelectOnlyVisibleNodes(bool selectOnlyVisibleNodes) { m_Connector->SetSelectOnlyVisibleNodes(selectOnlyVisibleNodes); }; -void QmitkAbstractDataStorageViewWidget::SetCurrentSelection(NodeList selectedNodes) +void QmitkAbstractDataStorageInspector::SetCurrentSelection(NodeList selectedNodes) { m_Connector->SetCurrentSelection(selectedNodes); }; -void QmitkAbstractDataStorageViewWidget::OnSelectionChanged(NodeList selectedNodes) +void QmitkAbstractDataStorageInspector::OnSelectionChanged(NodeList selectedNodes) { emit CurrentSelectionChanged(selectedNodes); }; diff --git a/Modules/QtWidgets/src/QmitkDataStorageListViewWidget.cpp b/Modules/QtWidgets/src/QmitkDataStorageListInspector.cpp similarity index 68% rename from Modules/QtWidgets/src/QmitkDataStorageListViewWidget.cpp rename to Modules/QtWidgets/src/QmitkDataStorageListInspector.cpp index ea6eeed18a..ff909e25bd 100644 --- a/Modules/QtWidgets/src/QmitkDataStorageListViewWidget.cpp +++ b/Modules/QtWidgets/src/QmitkDataStorageListInspector.cpp @@ -1,61 +1,61 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical Image Computing. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ -#include +#include #include -QmitkDataStorageListViewWidget::QmitkDataStorageListViewWidget(QWidget* parent/* = nullptr*/) - : QmitkAbstractDataStorageViewWidget(parent) +QmitkDataStorageListInspector::QmitkDataStorageListInspector(QWidget* parent/* = nullptr*/) + : QmitkAbstractDataStorageInspector(parent) { m_Controls.setupUi(this); m_Controls.view->setSelectionMode(QAbstractItemView::ExtendedSelection); m_Controls.view->setSelectionBehavior(QAbstractItemView::SelectRows); m_Controls.view->setAlternatingRowColors(true); m_StorageModel = new QmitkDataStorageDefaultListModel(this); m_Controls.view->setModel(m_StorageModel); } -QAbstractItemView* QmitkDataStorageListViewWidget::GetView() +QAbstractItemView* QmitkDataStorageListInspector::GetView() { return m_Controls.view; }; -QAbstractItemView* QmitkDataStorageListViewWidget::GetView() const +QAbstractItemView* QmitkDataStorageListInspector::GetView() const { return m_Controls.view; }; -void QmitkDataStorageListViewWidget::Initialize() +void QmitkDataStorageListInspector::Initialize() { m_StorageModel->SetDataStorage(m_DataStorage.Lock()); m_StorageModel->SetNodePredicate(m_NodePredicate); m_Connector->SetView(m_Controls.view); } -void QmitkDataStorageListViewWidget::SetSelectionMode(SelectionMode mode) +void QmitkDataStorageListInspector::SetSelectionMode(SelectionMode mode) { m_Controls.view->setSelectionMode(mode); } -QmitkDataStorageListViewWidget::SelectionMode QmitkDataStorageListViewWidget::GetSelectionMode() const +QmitkDataStorageListInspector::SelectionMode QmitkDataStorageListInspector::GetSelectionMode() const { return m_Controls.view->selectionMode(); }; diff --git a/Modules/QtWidgets/src/QmitkDataStorageListViewWidget.ui b/Modules/QtWidgets/src/QmitkDataStorageListInspector.ui similarity index 89% rename from Modules/QtWidgets/src/QmitkDataStorageListViewWidget.ui rename to Modules/QtWidgets/src/QmitkDataStorageListInspector.ui index ecdbf8bf22..abce896fce 100644 --- a/Modules/QtWidgets/src/QmitkDataStorageListViewWidget.ui +++ b/Modules/QtWidgets/src/QmitkDataStorageListInspector.ui @@ -1,46 +1,46 @@ - QmitkDataStorageListViewWidget - + QmitkDataStorageListInspector + 0 0 400 300 Form 0 0 0 0 0 QAbstractItemView::NoEditTriggers true