diff --git a/Modules/QtWidgetsExt/files.cmake b/Modules/QtWidgetsExt/files.cmake index e8bd9dd1f6..d5b2255af4 100644 --- a/Modules/QtWidgetsExt/files.cmake +++ b/Modules/QtWidgetsExt/files.cmake @@ -1,106 +1,104 @@ file(GLOB_RECURSE H_FILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/include/*") set(CPP_FILES qclickablelabel.cpp QmitkAboutDialog.cpp QmitkBasePropertyView.cpp QmitkBoolPropertyWidget.cpp QmitkBoundingObjectWidget.cpp QmitkCallbackFromGUIThread.cpp QmitkColorPropertyEditor.cpp QmitkColorPropertyView.cpp QmitkColorTransferFunctionCanvas.cpp QmitkCrossWidget.cpp QmitkEditPointDialog.cpp QmitkEnumerationPropertyWidget.cpp QmitkFFmpegWriter.cpp QmitkFileChooser.cpp QmitkGnuplotWidget.cpp QmitkHistogram.cpp QmitkHotkeyLineEdit.cpp QmitkModulesDialog.cpp QmitkModuleTableModel.cpp QmitkNumberPropertyEditor.cpp QmitkNumberPropertySlider.cpp QmitkNumberPropertyView.cpp QmitkPiecewiseFunctionCanvas.cpp QmitkPlotDialog.cpp QmitkPlotWidget.cpp QmitkPointListModel.cpp QmitkPointListView.cpp - QmitkPointListViewWidget.cpp QmitkPointListWidget.cpp QmitkPrimitiveMovieNavigatorWidget.cpp QmitkPropertyViewFactory.cpp QmitkSelectableGLWidget.cpp QmitkSliceWidget.cpp QmitkSliderNavigatorWidget.cpp QmitkStandardViews.cpp QmitkStepperAdapter.cpp QmitkStringPropertyEditor.cpp QmitkStringPropertyOnDemandEdit.cpp QmitkStringPropertyView.cpp QmitkTransferFunctionCanvas.cpp QmitkTransferFunctionGeneratorWidget.cpp QmitkTransferFunctionWidget.cpp QmitkUGCombinedRepresentationPropertyWidget.cpp QmitkVideoBackground.cpp QtWidgetsExtRegisterClasses.cpp ) set(MOC_H_FILES include/qclickablelabel.h include/QmitkAboutDialog.h include/QmitkBasePropertyView.h include/QmitkBoolPropertyWidget.h include/QmitkBoundingObjectWidget.h include/QmitkCallbackFromGUIThread.h include/QmitkColorPropertyEditor.h include/QmitkColorPropertyView.h include/QmitkColorTransferFunctionCanvas.h include/QmitkCrossWidget.h include/QmitkEditPointDialog.h include/QmitkEnumerationPropertyWidget.h include/QmitkFFmpegWriter.h include/QmitkFileChooser.h include/QmitkGnuplotWidget.h include/QmitkHotkeyLineEdit.h include/QmitkNumberPropertyEditor.h include/QmitkNumberPropertySlider.h include/QmitkNumberPropertyView.h include/QmitkPiecewiseFunctionCanvas.h include/QmitkPlotWidget.h include/QmitkPointListModel.h include/QmitkPointListView.h - include/QmitkPointListViewWidget.h include/QmitkPointListWidget.h include/QmitkPrimitiveMovieNavigatorWidget.h include/QmitkSelectableGLWidget.h include/QmitkSliceWidget.h include/QmitkSliderNavigatorWidget.h include/QmitkStandardViews.h include/QmitkStepperAdapter.h include/QmitkStringPropertyEditor.h include/QmitkStringPropertyOnDemandEdit.h include/QmitkStringPropertyView.h include/QmitkTransferFunctionCanvas.h include/QmitkTransferFunctionGeneratorWidget.h include/QmitkTransferFunctionWidget.h include/QmitkUGCombinedRepresentationPropertyWidget.h include/QmitkVideoBackground.h ) set(UI_FILES src/QmitkAboutDialogGUI.ui src/QmitkGnuplotWidget.ui src/QmitkPrimitiveMovieNavigatorWidget.ui src/QmitkSelectableGLWidget.ui src/QmitkSliceWidget.ui src/QmitkSliderNavigator.ui src/QmitkTransferFunctionGeneratorWidget.ui src/QmitkTransferFunctionWidget.ui ) set(QRC_FILES resource/QtWidgetsExt.qrc ) diff --git a/Modules/QtWidgetsExt/include/QmitkPointListViewWidget.h b/Modules/QtWidgetsExt/include/QmitkPointListViewWidget.h deleted file mode 100644 index 51420445c1..0000000000 --- a/Modules/QtWidgetsExt/include/QmitkPointListViewWidget.h +++ /dev/null @@ -1,100 +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 QmitkPointListViewWidget_h -#define QmitkPointListViewWidget_h - -#include "MitkQtWidgetsExtExports.h" -#include - -#include -#include - -class QmitkStdMultiWidget; - -/*! - * \brief GUI widget for handling mitk::PointSet - * - * Displays all the points in a mitk::PointSet graphically. - * Reacts automatically to changes in the PointSet's selection status. - * Updates PointSet's selection status when this list's selection changes. - * - * If a QmitkStdMultiWidget is assigned via SetMultiWidget(), the - * crosshair of the QmitkStdMultiWidget is moved to the currently selected - * point. - * - */ -class MITKQTWIDGETSEXT_EXPORT QmitkPointListViewWidget : public QListWidget -{ - Q_OBJECT - -signals: - void PointSelectionChanged(); ///< this signal is emmitted, if the selection of a point in the pointset is changed -public: - QmitkPointListViewWidget(QWidget *parent = nullptr); - ~QmitkPointListViewWidget() override; - - /// assign a point set for observation - void SetPointSet(mitk::PointSet *pointSet); - - /// which point set to work on - const mitk::PointSet *GetPointSet() const; - - void SetMultiWidget( - QmitkStdMultiWidget *multiWidget); ///< assign a QmitkStdMultiWidget for updating render window crosshair - - QmitkStdMultiWidget *GetMultiWidget() - const; ///< return the QmitkStdMultiWidget that is used for updating render window crosshair - - /// which time step to display/model - void SetTimeStep(int t); - - /// which time step to display/model - int GetTimeStep() const; - - /// observer for point set "modified" events - void OnPointSetChanged(); - - /// observer for point set "delete" events - void OnPointSetDeleted(); - -protected slots: - /// - /// Filtering double click event for editing point coordinates via a dialog - /// - void OnItemDoubleClicked(QListWidgetItem *item); - - /// called when the selection of the view widget changes - void OnCurrentRowChanged(int /*currentRow*/); - -protected: - void keyPressEvent(QKeyEvent *e) override; ///< react to F2, F3 and DEL keys - void MoveSelectedPointUp(); - void MoveSelectedPointDown(); - void RemoveSelectedPoint(); - void Update(bool currentRowChanged = false); - -protected: - mitk::WeakPointer m_PointSet; - - unsigned long m_PointSetDeletedTag; - unsigned long m_PointSetModifiedTag; - - int m_TimeStep; - - bool m_SelfCall; - - /// used to position the planes on a selected point - QmitkStdMultiWidget *m_MultiWidget; -}; - -#endif diff --git a/Modules/QtWidgetsExt/src/QmitkPointListViewWidget.cpp b/Modules/QtWidgetsExt/src/QmitkPointListViewWidget.cpp deleted file mode 100644 index 13a7321abe..0000000000 --- a/Modules/QtWidgetsExt/src/QmitkPointListViewWidget.cpp +++ /dev/null @@ -1,255 +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 "QmitkPointListViewWidget.h" - -#include "QmitkEditPointDialog.h" -#include "QmitkPointListModel.h" -#include "QmitkStdMultiWidget.h" - -#include "mitkInteractionConst.h" -#include "mitkPointOperation.h" -#include "mitkRenderingManager.h" - -#include - -QmitkPointListViewWidget::QmitkPointListViewWidget(QWidget *parent) - : QListWidget(parent), m_TimeStep(0), m_SelfCall(false), m_MultiWidget(nullptr) -{ - QListWidget::setAlternatingRowColors(true); - // logic - - QListWidget::setSelectionBehavior(QAbstractItemView::SelectRows); - QListWidget::setSelectionMode(QAbstractItemView::SingleSelection); - - connect(this, SIGNAL(itemDoubleClicked(QListWidgetItem *)), this, SLOT(OnItemDoubleClicked(QListWidgetItem *))); - - connect(this, SIGNAL(currentRowChanged(int)), this, SLOT(OnCurrentRowChanged(int))); -} - -QmitkPointListViewWidget::~QmitkPointListViewWidget() -{ - this->SetPointSet(nullptr); // remove listener -} - -void QmitkPointListViewWidget::SetPointSet(mitk::PointSet *pointSet) -{ - auto lockedPointSet = m_PointSet.Lock(); - - if (lockedPointSet.IsNotNull()) - { - lockedPointSet->RemoveObserver(m_PointSetModifiedTag); - lockedPointSet->RemoveObserver(m_PointSetDeletedTag); - } - - m_PointSet = pointSet; - lockedPointSet = m_PointSet.Lock(); - - if (lockedPointSet.IsNotNull()) - { - auto onPointSetDeleted = itk::SimpleMemberCommand::New(); - onPointSetDeleted->SetCallbackFunction(this, &QmitkPointListViewWidget::OnPointSetDeleted); - m_PointSetDeletedTag = lockedPointSet->AddObserver(itk::DeleteEvent(), onPointSetDeleted); - - auto onPointSetModified = itk::SimpleMemberCommand::New(); - onPointSetModified->SetCallbackFunction(this, &QmitkPointListViewWidget::OnPointSetChanged); - m_PointSetModifiedTag = lockedPointSet->AddObserver(itk::DeleteEvent(), onPointSetModified); - } - - this->Update(); -} - -const mitk::PointSet *QmitkPointListViewWidget::GetPointSet() const -{ - return m_PointSet.Lock(); -} - -void QmitkPointListViewWidget::SetTimeStep(int t) -{ - m_TimeStep = t; - this->Update(); -} - -int QmitkPointListViewWidget::GetTimeStep() const -{ - return m_TimeStep; -} - -void QmitkPointListViewWidget::SetMultiWidget(QmitkStdMultiWidget *multiWidget) -{ - m_MultiWidget = multiWidget; -} - -QmitkStdMultiWidget *QmitkPointListViewWidget::GetMultiWidget() const -{ - return m_MultiWidget; -} - -void QmitkPointListViewWidget::OnPointSetChanged() -{ - if (!m_SelfCall) - this->Update(); -} - -void QmitkPointListViewWidget::OnPointSetDeleted() -{ - this->SetPointSet(nullptr); - this->Update(); -} - -void QmitkPointListViewWidget::OnItemDoubleClicked(QListWidgetItem *item) -{ - QmitkEditPointDialog _EditPointDialog(this); - _EditPointDialog.SetPoint(m_PointSet.Lock(), this->row(item), m_TimeStep); - _EditPointDialog.exec(); -} - -void QmitkPointListViewWidget::OnCurrentRowChanged(int) -{ - this->Update(true); -} - -void QmitkPointListViewWidget::keyPressEvent(QKeyEvent *e) -{ - if (m_PointSet.IsExpired()) - return; - - int key = e->key(); - switch (key) - { - case Qt::Key_F2: - this->MoveSelectedPointUp(); - break; - case Qt::Key_F3: - this->MoveSelectedPointDown(); - break; - case Qt::Key_Delete: - this->RemoveSelectedPoint(); - break; - default: - break; - } -} - -void QmitkPointListViewWidget::MoveSelectedPointUp() -{ - auto pointSet = m_PointSet.Lock(); - - if (pointSet.IsNull()) - return; - - mitk::PointSet::PointIdentifier selectedID; - selectedID = pointSet->SearchSelectedPoint(m_TimeStep); - mitk::PointOperation *doOp = - new mitk::PointOperation(mitk::OpMOVEPOINTUP, pointSet->GetPoint(selectedID, m_TimeStep), selectedID, true); - pointSet->ExecuteOperation(doOp); - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); // Workaround for update problem in Pointset/Mapper -} - -void QmitkPointListViewWidget::MoveSelectedPointDown() -{ - auto pointSet = m_PointSet.Lock(); - - if (pointSet.IsNull()) - return; - - mitk::PointSet::PointIdentifier selectedID; - selectedID = pointSet->SearchSelectedPoint(m_TimeStep); - mitk::PointOperation *doOp = - new mitk::PointOperation(mitk::OpMOVEPOINTDOWN, pointSet->GetPoint(selectedID, m_TimeStep), selectedID, true); - pointSet->ExecuteOperation(doOp); - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); // Workaround for update problem in Pointset/Mapper -} - -void QmitkPointListViewWidget::RemoveSelectedPoint() -{ - auto pointSet = m_PointSet.Lock(); - - if (pointSet.IsNull()) - return; - - mitk::PointSet::PointIdentifier selectedID; - selectedID = pointSet->SearchSelectedPoint(m_TimeStep); - mitk::PointOperation *doOp = - new mitk::PointOperation(mitk::OpREMOVE, pointSet->GetPoint(selectedID, m_TimeStep), selectedID, true); - pointSet->ExecuteOperation(doOp); - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); // Workaround for update problem in Pointset/Mapper -} - -void QmitkPointListViewWidget::Update(bool currentRowChanged) -{ - if (m_SelfCall) - return; - - auto pointSet = m_PointSet.Lock(); - - if (pointSet.IsNull()) - { - this->clear(); - return; - } - - m_SelfCall = true; - QString text; - int i = 0; - - mitk::PointSet::DataType::Pointer pointset = pointSet->GetPointSet(m_TimeStep); - for (mitk::PointSet::PointsContainer::Iterator it = pointset->GetPoints()->Begin(); - it != pointset->GetPoints()->End(); - ++it) - { - text = QString("%0: (%1, %2, %3)") - .arg(i, 3) - .arg(it.Value().GetElement(0), 0, 'f', 3) - .arg(it.Value().GetElement(1), 0, 'f', 3) - .arg(it.Value().GetElement(2), 0, 'f', 3); - - if (i == this->count()) - this->addItem(text); // insert text - else - this->item(i)->setText(text); // update text - - if (currentRowChanged) - { - if (i == this->currentRow()) - pointSet->SetSelectInfo(this->currentRow(), true, m_TimeStep); - else - pointSet->SetSelectInfo(it->Index(), false, m_TimeStep); // select nothing now - } - ++i; - } - - // remove unnecessary listwidgetitems - while (pointSet->GetPointSet(m_TimeStep)->GetPoints()->Size() < (unsigned int)this->count()) - { - QListWidgetItem *item = this->takeItem(this->count() - 1); - delete item; - } - - // update selection in pointset or in the list widget - if (!currentRowChanged) - { - if (pointSet->GetNumberOfSelected(m_TimeStep) > 1) - { - /// @TODO use logging as soon as available - std::cerr << "Point set has multiple selected points. This view is not designed for more than one selected point." - << std::endl; - } - - int selectedIndex = pointSet->SearchSelectedPoint(m_TimeStep); - if (selectedIndex != -1) // no selected point is found - { - this->setCurrentRow(selectedIndex); - } - } - m_SelfCall = false; -}