diff --git a/Modules/SegmentationUI/SegmentationUtilities/QmitkDataSelectionWidget.cpp b/Modules/SegmentationUI/SegmentationUtilities/QmitkDataSelectionWidget.cpp deleted file mode 100644 index 2b0aaaafc8..0000000000 --- a/Modules/SegmentationUI/SegmentationUtilities/QmitkDataSelectionWidget.cpp +++ /dev/null @@ -1,242 +0,0 @@ -/*============================================================================ - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center (DKFZ) -All rights reserved. - -Use of this source code is governed by a 3-clause BSD license that can be -found in the LICENSE file. - -============================================================================*/ - -#include "QmitkDataSelectionWidget.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -static mitk::NodePredicateBase::Pointer CreatePredicate(QmitkDataSelectionWidget::Predicate predicate) -{ - auto imageType = mitk::TNodePredicateDataType::New(); - auto labelSetImageType = mitk::TNodePredicateDataType::New(); - auto surfaceType = mitk::TNodePredicateDataType::New(); - auto contourModelType = mitk::TNodePredicateDataType::New(); - auto contourModelSetType = mitk::TNodePredicateDataType::New(); - auto nonLabelSetImageType = mitk::NodePredicateAnd::New(imageType, mitk::NodePredicateNot::New(labelSetImageType)); - auto nonHelperObject = mitk::NodePredicateNot::New(mitk::NodePredicateOr::New( - mitk::NodePredicateProperty::New("helper object"), - mitk::NodePredicateProperty::New("hidden object"))); - auto isBinary = mitk::NodePredicateProperty::New("binary", mitk::BoolProperty::New(true)); - auto isSegmentation = mitk::NodePredicateProperty::New("segmentation", mitk::BoolProperty::New(true)); - auto isBinaryOrSegmentation = mitk::NodePredicateOr::New(isBinary, isSegmentation); - - mitk::NodePredicateBase::Pointer returnValue; - - switch(predicate) - { - case QmitkDataSelectionWidget::ImagePredicate: - returnValue = mitk::NodePredicateAnd::New( - mitk::NodePredicateNot::New(isBinaryOrSegmentation), - nonLabelSetImageType).GetPointer(); - break; - - case QmitkDataSelectionWidget::SegmentationPredicate: - returnValue = mitk::NodePredicateOr::New( - mitk::NodePredicateAnd::New(imageType, isBinaryOrSegmentation), - labelSetImageType).GetPointer(); - break; - - case QmitkDataSelectionWidget::SurfacePredicate: - returnValue = surfaceType.GetPointer(); - break; - - case QmitkDataSelectionWidget::ImageAndSegmentationPredicate: - returnValue = imageType.GetPointer(); - break; - - case QmitkDataSelectionWidget::ContourModelPredicate: - returnValue = mitk::NodePredicateOr::New( - contourModelSetType, - contourModelSetType).GetPointer(); - break; - - case QmitkDataSelectionWidget::SegmentationOrSurfacePredicate: - returnValue = mitk::NodePredicateOr::New( - mitk::NodePredicateAnd::New(imageType, isBinaryOrSegmentation), - labelSetImageType).GetPointer(); - returnValue = mitk::NodePredicateOr::New(returnValue, surfaceType).GetPointer(); - break; - - default: - assert(false && "Unknown predefined predicate!"); - return nullptr; - } - - return mitk::NodePredicateAnd::New(returnValue, nonHelperObject).GetPointer(); -} - -QmitkDataSelectionWidget::QmitkDataSelectionWidget(QWidget* parent) - : QWidget(parent) -{ - m_Controls.setupUi(this); - m_Controls.helpLabel->hide(); -} - -QmitkDataSelectionWidget::~QmitkDataSelectionWidget() -{ -} - -unsigned int QmitkDataSelectionWidget::AddDataSelection(QmitkDataSelectionWidget::Predicate predicate) -{ - QString hint = "Select node"; - - switch (predicate) - { - case QmitkDataSelectionWidget::ImagePredicate: - hint = "Select an image"; - break; - - case QmitkDataSelectionWidget::SegmentationPredicate: - hint = "Select a segmentation"; - break; - - case QmitkDataSelectionWidget::SurfacePredicate: - hint = "Select a surface"; - break; - - case QmitkDataSelectionWidget::ImageAndSegmentationPredicate: - hint = "Select an image or segmentation"; - break; - - case QmitkDataSelectionWidget::ContourModelPredicate: - hint = "Select a contour model"; - break; - - case QmitkDataSelectionWidget::SegmentationOrSurfacePredicate: - hint = "Select a segmentation or surface"; - break; - } - - return this->AddDataSelection("", hint, hint, "", predicate); -} - -unsigned int QmitkDataSelectionWidget::AddDataSelection(mitk::NodePredicateBase* predicate) -{ - return this->AddDataSelection("", "Select a node", "Select a node", "", predicate); -} - -unsigned int QmitkDataSelectionWidget::AddDataSelection(const QString &labelText, const QString &info, const QString &popupTitel, const QString &popupHint, QmitkDataSelectionWidget::Predicate predicate) -{ - return this->AddDataSelection(labelText, info, popupHint, popupTitel, CreatePredicate(predicate)); -} - -unsigned int QmitkDataSelectionWidget::AddDataSelection(const QString &labelText, const QString &info, const QString &popupTitel, const QString &popupHint, mitk::NodePredicateBase* predicate) -{ - int row = m_Controls.gridLayout->rowCount(); - - if (!labelText.isEmpty()) - { - QLabel* label = new QLabel(labelText, m_Controls.dataSelectionWidget); - label->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum); - m_Controls.gridLayout->addWidget(label, row, 0); - } - - QmitkSingleNodeSelectionWidget* nodeSelection = new QmitkSingleNodeSelectionWidget(m_Controls.dataSelectionWidget); - - nodeSelection->SetSelectionIsOptional(false); - nodeSelection->SetInvalidInfo(info); - nodeSelection->SetPopUpTitel(popupTitel); - nodeSelection->SetPopUpHint(popupHint); - nodeSelection->SetDataStorage(this->GetDataStorage()); - nodeSelection->SetNodePredicate(predicate); - nodeSelection->SetAutoSelectNewNodes(true); - nodeSelection->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum); - nodeSelection->setMinimumSize(0, 40); - - connect(nodeSelection, &QmitkAbstractNodeSelectionWidget::CurrentSelectionChanged, this, &QmitkDataSelectionWidget::OnSelectionChanged); - - m_Controls.gridLayout->addWidget(nodeSelection, row, 1); - - m_NodeSelectionWidgets.push_back(nodeSelection); - return static_cast(m_NodeSelectionWidgets.size() - 1); - return row; -} - -void QmitkDataSelectionWidget::SetDataStorage(mitk::DataStorage* dataStorage) -{ - if (m_DataStorage == dataStorage) - { - return; - } - - m_DataStorage = dataStorage; -} - -mitk::DataStorage::Pointer QmitkDataSelectionWidget::GetDataStorage() const -{ - return m_DataStorage.Lock(); -} - -mitk::DataNode::Pointer QmitkDataSelectionWidget::GetSelection(unsigned int index) -{ - assert(index < m_NodeSelectionWidgets.size()); - return m_NodeSelectionWidgets[index]->GetSelectedNode(); -} - -void QmitkDataSelectionWidget::SetPredicate(unsigned int index, Predicate predicate) -{ - this->SetPredicate(index, CreatePredicate(predicate)); -} - -void QmitkDataSelectionWidget::SetPredicate(unsigned int index, const mitk::NodePredicateBase* predicate) -{ - assert(index < m_NodeSelectionWidgets.size()); - m_NodeSelectionWidgets[index]->SetNodePredicate(predicate); -} - -const mitk::NodePredicateBase *QmitkDataSelectionWidget::GetPredicate(unsigned int index) const -{ - assert(index < m_NodeSelectionWidgets.size()); - return m_NodeSelectionWidgets[index]->GetNodePredicate(); -} - -void QmitkDataSelectionWidget::SetHelpText(const QString& text) -{ - if (!text.isEmpty()) - { - m_Controls.helpLabel->setText(text); - - if (!m_Controls.helpLabel->isVisible()) - m_Controls.helpLabel->show(); - } - else - { - m_Controls.helpLabel->hide(); - } -} - -void QmitkDataSelectionWidget::OnSelectionChanged(QList selection) -{ - std::vector::iterator it = std::find(m_NodeSelectionWidgets.begin(), m_NodeSelectionWidgets.end(), sender()); - assert(it != m_NodeSelectionWidgets.end()); - - const mitk::DataNode* result = nullptr; - if (!selection.empty()) - { - result = selection.front(); - } - emit SelectionChanged(std::distance(m_NodeSelectionWidgets.begin(), it), result); -} diff --git a/Modules/SegmentationUI/SegmentationUtilities/QmitkDataSelectionWidget.h b/Modules/SegmentationUI/SegmentationUtilities/QmitkDataSelectionWidget.h deleted file mode 100644 index 4195fd235d..0000000000 --- a/Modules/SegmentationUI/SegmentationUtilities/QmitkDataSelectionWidget.h +++ /dev/null @@ -1,75 +0,0 @@ -/*============================================================================ - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center (DKFZ) -All rights reserved. - -Use of this source code is governed by a 3-clause BSD license that can be -found in the LICENSE file. - -============================================================================*/ - -#ifndef QmitkDataSelectionWidget_h -#define QmitkDataSelectionWidget_h - -#include - -#include -#include -#include -#include - -#include - -namespace mitk -{ - class NodePredicateBase; -} - -class QmitkSingleNodeSelectionWidget; - -class MITKSEGMENTATIONUI_EXPORT QmitkDataSelectionWidget : public QWidget -{ - Q_OBJECT - -public: - enum Predicate - { - ImagePredicate, - SegmentationPredicate, - SurfacePredicate, - ImageAndSegmentationPredicate, - ContourModelPredicate, - SegmentationOrSurfacePredicate - }; - - explicit QmitkDataSelectionWidget(QWidget* parent = nullptr); - ~QmitkDataSelectionWidget() override; - - unsigned int AddDataSelection(Predicate predicate); - unsigned int AddDataSelection(mitk::NodePredicateBase* predicate = nullptr); - unsigned int AddDataSelection(const QString &labelText, const QString &info, const QString &popupTitel, const QString &popupHint, Predicate predicate); - unsigned int AddDataSelection(const QString &labelText, const QString &info, const QString &popupTitel, const QString &popupHint, mitk::NodePredicateBase* predicate = nullptr); - - void SetDataStorage(mitk::DataStorage* dataStorage); - mitk::DataStorage::Pointer GetDataStorage() const; - mitk::DataNode::Pointer GetSelection(unsigned int index); - void SetPredicate(unsigned int index, Predicate predicate); - void SetPredicate(unsigned int index, const mitk::NodePredicateBase* predicate); - const mitk::NodePredicateBase *GetPredicate(unsigned int index) const; - void SetHelpText(const QString& text); - -signals: - void SelectionChanged(unsigned int index, const mitk::DataNode* selection); - -private slots: - void OnSelectionChanged(QList selection); - -private: - Ui::QmitkDataSelectionWidgetControls m_Controls; - mitk::WeakPointer m_DataStorage; - std::vector m_NodeSelectionWidgets; -}; - -#endif diff --git a/Modules/SegmentationUI/SegmentationUtilities/QmitkDataSelectionWidgetControls.ui b/Modules/SegmentationUI/SegmentationUtilities/QmitkDataSelectionWidgetControls.ui deleted file mode 100644 index 6d6fcf1369..0000000000 --- a/Modules/SegmentationUI/SegmentationUtilities/QmitkDataSelectionWidgetControls.ui +++ /dev/null @@ -1,94 +0,0 @@ - - - QmitkDataSelectionWidgetControls - - - - 0 - 0 - 333 - 191 - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - - - - Data Selection - - - - - - - 0 - 0 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - - - - 0 - 0 - - - - color: red - - - - - - true - - - - - - - - - - - diff --git a/Modules/SegmentationUI/files.cmake b/Modules/SegmentationUI/files.cmake index b775a8af5a..6072f2a5ed 100644 --- a/Modules/SegmentationUI/files.cmake +++ b/Modules/SegmentationUI/files.cmake @@ -1,126 +1,123 @@ set(CPP_FILES Qmitk/QmitkSegWithPreviewToolGUIBase.cpp Qmitk/QmitkMultiLabelSegWithPreviewToolGUIBase.cpp Qmitk/QmitkBinaryThresholdToolGUIBase.cpp Qmitk/QmitkBinaryThresholdToolGUI.cpp Qmitk/QmitkBinaryThresholdULToolGUI.cpp Qmitk/QmitkConfirmSegmentationDialog.cpp Qmitk/QmitkCopyToClipBoardDialog.cpp Qmitk/QmitkDrawPaintbrushToolGUI.cpp Qmitk/QmitkErasePaintbrushToolGUI.cpp Qmitk/QmitkEditableContourToolGUIBase.cpp Qmitk/QmitkGrowCutToolGUI.cpp Qmitk/QmitkLiveWireTool2DGUI.cpp Qmitk/QmitkLassoToolGUI.cpp Qmitk/QmitkOtsuTool3DGUI.cpp Qmitk/QmitkPaintbrushToolGUI.cpp Qmitk/QmitkPickingToolGUI.cpp Qmitk/QmitkSlicesInterpolator.cpp Qmitk/QmitkToolGUI.cpp Qmitk/QmitkToolGUIArea.cpp Qmitk/QmitkToolSelectionBox.cpp Qmitk/QmitknnUNetFolderParser.cpp Qmitk/QmitknnUNetToolGUI.cpp Qmitk/QmitknnUNetWorker.cpp Qmitk/QmitknnUNetGPU.cpp Qmitk/QmitkSurfaceStampWidget.cpp Qmitk/QmitkMaskStampWidget.cpp Qmitk/QmitkStaticDynamicSegmentationDialog.cpp Qmitk/QmitkSimpleLabelSetListWidget.cpp Qmitk/QmitkSegmentationTaskListWidget.cpp Qmitk/QmitkTotalSegmentatorToolGUI.cpp Qmitk/QmitkSetupVirtualEnvUtil.cpp Qmitk/QmitkMultiLabelInspector.cpp Qmitk/QmitkMultiLabelManager.cpp Qmitk/QmitkMultiLabelTreeModel.cpp Qmitk/QmitkMultiLabelTreeView.cpp Qmitk/QmitkMultiLabelPresetHelper.cpp Qmitk/QmitkLabelColorItemDelegate.cpp Qmitk/QmitkLabelToggleItemDelegate.cpp Qmitk/QmitkFindSegmentationTaskDialog.cpp Qmitk/QmitkSegmentAnythingToolGUI.cpp SegmentationUtilities/QmitkBooleanOperationsWidget.cpp SegmentationUtilities/QmitkImageMaskingWidget.cpp SegmentationUtilities/QmitkMorphologicalOperationsWidget.cpp - SegmentationUtilities/QmitkDataSelectionWidget.cpp SegmentationUtilities/QmitkConvertToMultiLabelSegmentationWidget.cpp SegmentationUtilities/QmitkExtractFromMultiLabelSegmentationWidget.cpp ) set(H_FILES Qmitk/QmitkMultiLabelPresetHelper.h ) set(MOC_H_FILES Qmitk/QmitkSegWithPreviewToolGUIBase.h Qmitk/QmitkMultiLabelSegWithPreviewToolGUIBase.h Qmitk/QmitkBinaryThresholdToolGUIBase.h Qmitk/QmitkBinaryThresholdToolGUI.h Qmitk/QmitkBinaryThresholdULToolGUI.h Qmitk/QmitkConfirmSegmentationDialog.h Qmitk/QmitkCopyToClipBoardDialog.h Qmitk/QmitkDrawPaintbrushToolGUI.h Qmitk/QmitkErasePaintbrushToolGUI.h Qmitk/QmitkEditableContourToolGUIBase.h Qmitk/QmitkGrowCutToolGUI.h Qmitk/QmitkLiveWireTool2DGUI.h Qmitk/QmitkLassoToolGUI.h Qmitk/QmitkOtsuTool3DGUI.h Qmitk/QmitkPaintbrushToolGUI.h Qmitk/QmitkPickingToolGUI.h Qmitk/QmitkSlicesInterpolator.h Qmitk/QmitkToolGUI.h Qmitk/QmitkToolGUIArea.h Qmitk/QmitkToolSelectionBox.h Qmitk/QmitknnUNetFolderParser.h Qmitk/QmitknnUNetToolGUI.h Qmitk/QmitknnUNetGPU.h Qmitk/QmitknnUNetWorker.h Qmitk/QmitknnUNetEnsembleLayout.h Qmitk/QmitkSurfaceStampWidget.h Qmitk/QmitkMaskStampWidget.h Qmitk/QmitkStaticDynamicSegmentationDialog.h Qmitk/QmitkSimpleLabelSetListWidget.h Qmitk/QmitkSegmentationTaskListWidget.h Qmitk/QmitkTotalSegmentatorToolGUI.h Qmitk/QmitkSetupVirtualEnvUtil.h Qmitk/QmitkMultiLabelInspector.h Qmitk/QmitkMultiLabelManager.h Qmitk/QmitkMultiLabelTreeModel.h Qmitk/QmitkMultiLabelTreeView.h Qmitk/QmitkLabelColorItemDelegate.h Qmitk/QmitkLabelToggleItemDelegate.h Qmitk/QmitkFindSegmentationTaskDialog.h Qmitk/QmitkSegmentAnythingToolGUI.h SegmentationUtilities/QmitkBooleanOperationsWidget.h SegmentationUtilities/QmitkImageMaskingWidget.h SegmentationUtilities/QmitkMorphologicalOperationsWidget.h - SegmentationUtilities/QmitkDataSelectionWidget.h SegmentationUtilities/QmitkConvertToMultiLabelSegmentationWidget.h SegmentationUtilities/QmitkExtractFromMultiLabelSegmentationWidget.h ) set(UI_FILES Qmitk/QmitkConfirmSegmentationDialog.ui Qmitk/QmitkGrowCutToolWidgetControls.ui Qmitk/QmitkOtsuToolWidgetControls.ui Qmitk/QmitkSurfaceStampWidgetGUIControls.ui Qmitk/QmitkMaskStampWidgetGUIControls.ui Qmitk/QmitknnUNetToolGUIControls.ui Qmitk/QmitkEditableContourToolGUIControls.ui Qmitk/QmitkSegmentationTaskListWidget.ui Qmitk/QmitkTotalSegmentatorGUIControls.ui Qmitk/QmitkMultiLabelInspectorControls.ui Qmitk/QmitkMultiLabelManagerControls.ui Qmitk/QmitkFindSegmentationTaskDialog.ui Qmitk/QmitkSegmentAnythingGUIControls.ui SegmentationUtilities/QmitkBooleanOperationsWidgetControls.ui SegmentationUtilities/QmitkImageMaskingWidgetControls.ui SegmentationUtilities/QmitkMorphologicalOperationsWidgetControls.ui - SegmentationUtilities/QmitkDataSelectionWidgetControls.ui SegmentationUtilities/QmitkConvertToMultiLabelSegmentationWidgetControls.ui SegmentationUtilities/QmitkExtractFromMultiLabelSegmentationWidgetControls.ui ) set(QRC_FILES resources/SegmentationUI.qrc )