22 #include <QSignalMapper> 27 m_Controls.setupUi(
this);
30 m_RenderWindowLayerController = std::make_unique<mitk::RenderWindowLayerController>();
31 m_RenderWindowViewDirectionController = std::make_unique<mitk::RenderWindowViewDirectionController>();
33 m_StorageModel = std::make_unique<QmitkRenderWindowDataStorageTreeModel>(
this);
35 m_Controls.renderWindowTreeView->setModel(m_StorageModel.get());
36 m_Controls.renderWindowTreeView->setHeaderHidden(
true);
37 m_Controls.renderWindowTreeView->setEditTriggers(QAbstractItemView::NoEditTriggers);
38 m_Controls.renderWindowTreeView->setSelectionBehavior(QAbstractItemView::SelectRows);
39 m_Controls.renderWindowTreeView->setSelectionMode(QAbstractItemView::ExtendedSelection);
40 m_Controls.renderWindowTreeView->setAlternatingRowColors(
true);
41 m_Controls.renderWindowTreeView->setDragEnabled(
true);
42 m_Controls.renderWindowTreeView->setDropIndicatorShown(
true);
43 m_Controls.renderWindowTreeView->setAcceptDrops(
true);
44 m_Controls.renderWindowTreeView->setContextMenuPolicy(Qt::CustomContextMenu);
51 return m_Controls.renderWindowTreeView;
56 return m_Controls.renderWindowTreeView;
61 m_Controls.renderWindowTreeView->setSelectionMode(mode);
66 return m_Controls.renderWindowTreeView->selectionMode();
69 void QmitkRenderWindowDataStorageInspector::Initialize()
78 m_StorageModel->SetDataStorage(dataStorage);
81 m_RenderWindowLayerController->SetDataStorage(dataStorage);
82 m_RenderWindowViewDirectionController->SetDataStorage(dataStorage);
84 m_Connector->SetView(m_Controls.renderWindowTreeView);
87 void QmitkRenderWindowDataStorageInspector::SetUpConnections()
89 connect(m_StorageModel.get(), &QAbstractItemModel::rowsInserted,
this, &QmitkRenderWindowDataStorageInspector::ModelRowsInserted);
91 connect(m_Controls.pushButtonSetAsBaseLayer, &QPushButton::clicked,
this, &QmitkRenderWindowDataStorageInspector::SetAsBaseLayer);
92 connect(m_Controls.pushButtonResetRenderer, &QPushButton::clicked,
this, &QmitkRenderWindowDataStorageInspector::ResetRenderer);
94 QSignalMapper* changeViewDirectionSignalMapper =
new QSignalMapper(
this);
95 changeViewDirectionSignalMapper->setMapping(m_Controls.radioButtonAxial, QString(
"axial"));
96 changeViewDirectionSignalMapper->setMapping(m_Controls.radioButtonCoronal, QString(
"coronal"));
97 changeViewDirectionSignalMapper->setMapping(m_Controls.radioButtonSagittal, QString(
"sagittal"));
98 changeViewDirectionSignalMapper->setMapping(m_Controls.radioButton3D, QString(
"3D"));
99 connect(changeViewDirectionSignalMapper,
static_cast<void(QSignalMapper::*)(
const QString&)
>(&QSignalMapper::mapped),
this, &QmitkRenderWindowDataStorageInspector::ChangeViewDirection);
101 connect(m_Controls.radioButtonAxial, &QPushButton::clicked, changeViewDirectionSignalMapper, static_cast<
void(QSignalMapper::*)()>(&
QSignalMapper::map));
102 connect(m_Controls.radioButtonCoronal, &QPushButton::clicked, changeViewDirectionSignalMapper, static_cast<
void(QSignalMapper::*)()>(&
QSignalMapper::map));
103 connect(m_Controls.radioButtonSagittal, &QPushButton::clicked, changeViewDirectionSignalMapper, static_cast<
void(QSignalMapper::*)()>(&
QSignalMapper::map));
104 connect(m_Controls.radioButton3D, &QPushButton::clicked, changeViewDirectionSignalMapper, static_cast<
void(QSignalMapper::*)()>(&
QSignalMapper::map));
109 m_StorageModel->SetControlledRenderer(controlledRenderer);
110 m_RenderWindowLayerController->SetControlledRenderer(controlledRenderer);
111 m_RenderWindowViewDirectionController->SetControlledRenderer(controlledRenderer);
117 if (
nullptr == selectedRenderer)
122 m_StorageModel->SetCurrentRenderer(selectedRenderer);
124 switch (viewDirection)
127 m_Controls.radioButtonAxial->setChecked(
true);
130 m_Controls.radioButtonCoronal->setChecked(
true);
133 m_Controls.radioButtonSagittal->setChecked(
true);
140 void QmitkRenderWindowDataStorageInspector::ModelRowsInserted(
const QModelIndex& parent,
int ,
int )
142 m_Controls.renderWindowTreeView->setExpanded(parent,
true);
145 void QmitkRenderWindowDataStorageInspector::SetAsBaseLayer()
147 QModelIndex selectedIndex = m_Controls.renderWindowTreeView->currentIndex();
148 if (selectedIndex.isValid())
150 QVariant qvariantDataNode = m_StorageModel->data(selectedIndex, Qt::UserRole);
154 m_RenderWindowLayerController->SetBaseDataNode(dataNode, m_StorageModel->GetCurrentRenderer());
155 m_Controls.renderWindowTreeView->clearSelection();
160 void QmitkRenderWindowDataStorageInspector::ResetRenderer()
162 m_RenderWindowLayerController->ResetRenderer(
true, m_StorageModel->GetCurrentRenderer());
163 m_Controls.renderWindowTreeView->clearSelection();
166 void QmitkRenderWindowDataStorageInspector::ChangeViewDirection(
const QString& viewDirection)
168 m_RenderWindowViewDirectionController->SetViewDirectionOfRenderer(viewDirection.toStdString(), m_StorageModel->GetCurrentRenderer());
QAbstractItemView * GetView() override
See 'QmitkAbstractDataStorageInspector'.
itk::SmartPointer< T > Lock() const
Organizes the rendering process.
mitk::NodePredicateBase::ConstPointer m_NodePredicate
SelectionMode GetSelectionMode() const override
See 'QmitkAbstractDataStorageInspector'.
mitk::WeakPointer< mitk::DataStorage > m_DataStorage
void SetControlledRenderer(mitk::RenderWindowLayerUtilities::RendererVector controlledRenderer)
Set the controlled base renderer.
std::vector< BaseRenderer * > RendererVector
ViewDirection
Possible view directions, Original will uses the PlaneGeometry instances in a SlicedGeometry3D provid...
void SetActiveRenderWindow(const QString &renderWindowId)
Set the currently selected render window.
bool IsExpired() const noexcept
void SetSelectionMode(SelectionMode mode) override
See 'QmitkAbstractDataStorageInspector'.
MITKMATCHPOINTREGISTRATION_EXPORT ResultImageType::Pointer map(const InputImageType *input, const RegistrationType *registration, bool throwOnOutOfInputAreaError=false, const double &paddingValue=0, const ResultImageGeometryType *resultGeometry=nullptr, bool throwOnMappingError=true, const double &errorValue=0, mitk::ImageMappingInterpolator::Type interpolatorType=mitk::ImageMappingInterpolator::Linear)
static BaseRenderer * GetByName(const std::string &name)
QAbstractItemView::SelectionMode SelectionMode
virtual SliceNavigationController * GetSliceNavigationController()
std::unique_ptr< QmitkModelViewSelectionConnector > m_Connector
This abstract class is a convenient base class for easy implementation of widgets that offer a specif...
QmitkRenderWindowDataStorageInspector(QWidget *parent=nullptr)
Class for nodes of the DataTree.