Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "QmitkViewInitializationView.h"
00019
00020 #include "mitkNodePredicateDataType.h"
00021
00022 #include "QmitkDataStorageComboBox.h"
00023 #include "QmitkStdMultiWidget.h"
00024
00025 #include "mitkFocusManager.h"
00026 #include "mitkGlobalInteraction.h"
00027 #include "itkCommand.h"
00028
00029
00030 #include <QMessageBox>
00031
00032
00033
00034 const std::string QmitkViewInitializationView::VIEW_ID = "org.mitk.views.viewinitialization";
00035
00036 QmitkViewInitializationView::QmitkViewInitializationView()
00037 : QmitkFunctionality(),
00038 m_Controls(NULL),
00039 m_MultiWidget(NULL)
00040 {
00041 m_CommandTag = 0;
00042 }
00043
00044 QmitkViewInitializationView::~QmitkViewInitializationView()
00045 {
00046 }
00047
00048 void QmitkViewInitializationView::CreateQtPartControl(QWidget *parent)
00049 {
00050 if (!m_Controls)
00051 {
00052
00053 m_Controls = new Ui::QmitkViewInitializationViewControls;
00054 m_Controls->setupUi(parent);
00055 this->CreateConnections();
00056 }
00057 }
00058
00059 void QmitkViewInitializationView::StdMultiWidgetAvailable (QmitkStdMultiWidget &stdMultiWidget)
00060 {
00061 m_MultiWidget = &stdMultiWidget;
00062 }
00063
00064 void QmitkViewInitializationView::StdMultiWidgetNotAvailable()
00065 {
00066 m_MultiWidget = NULL;
00067 }
00068
00069 void QmitkViewInitializationView::CreateConnections()
00070 {
00071 if ( m_Controls )
00072 {
00073 connect( (QObject*)(m_Controls->pbApply), SIGNAL(clicked()),(QObject*) this, SLOT(OnApply()) );
00074 connect( (QObject*)(m_Controls->pbReset), SIGNAL(clicked()),(QObject*) this, SLOT(OnResetAll()) );
00075 }
00076 }
00077
00078 void QmitkViewInitializationView::Activated()
00079 {
00080
00081 this->InitRenderWindowSelector();
00082 QmitkFunctionality::Activated();
00083 }
00084
00085 void QmitkViewInitializationView::Deactivated()
00086 {
00087 mitk::FocusManager* fm = mitk::GlobalInteraction::GetInstance()->GetFocusManager();
00088 fm->RemoveObserver(m_CommandTag);
00089 QmitkFunctionality::Deactivated();
00090 }
00091
00092
00093 void QmitkViewInitializationView::OnApply()
00094 {
00095 mitk::SliceNavigationController::ViewDirection viewDirection( mitk::SliceNavigationController::Transversal );
00096 if( m_Controls->rbTransversal->isChecked() )
00097 viewDirection = mitk::SliceNavigationController::Transversal;
00098
00099 else if( m_Controls->rbFrontal->isChecked())
00100 viewDirection = mitk::SliceNavigationController::Frontal;
00101
00102 else if( m_Controls->rbSagittal->isChecked() )
00103 viewDirection = mitk::SliceNavigationController::Sagittal;
00104
00105 vtkRenderWindow* renderwindow = this->GetSelectedRenderWindow();
00106 if(renderwindow != NULL)
00107 {
00108 mitk::BaseRenderer::GetInstance(renderwindow)->GetSliceNavigationController()->Update(viewDirection,
00109 m_Controls->cbTop->isChecked(),
00110 m_Controls->cbFrontSide->isChecked(),
00111 m_Controls->cbRotated->isChecked()
00112 );
00113 mitk::BaseRenderer::GetInstance(renderwindow)->GetDisplayGeometry()->Fit();
00114 }
00115 }
00116
00117 void QmitkViewInitializationView::OnResetAll()
00118 {
00119
00120 mitk::TimeSlicedGeometry::Pointer bounds = this->GetDefaultDataStorage()->ComputeBoundingGeometry3D();
00121
00122 mitk::RenderingManager::GetInstance()->InitializeViews(bounds);
00123 }
00124
00125 vtkRenderWindow* QmitkViewInitializationView::GetSelectedRenderWindow()
00126 {
00127 int selectedItem = m_Controls->m_lbRenderWindows->currentRow();
00128 int itemNumber = 0;
00129
00130 mitk::BaseRenderer::BaseRendererMapType::iterator mapit;
00131 for(mapit = mitk::BaseRenderer::baseRendererMap.begin();
00132 mapit != mitk::BaseRenderer::baseRendererMap.end();
00133 mapit++, itemNumber++)
00134 {
00135 if(itemNumber==selectedItem)
00136 break;
00137 }
00138 if(itemNumber==selectedItem)
00139 {
00140 return (*mapit).first;
00141 }
00142 return NULL;
00143 }
00144
00145 void QmitkViewInitializationView::InitRenderWindowSelector()
00146 {
00147 itk::SimpleMemberCommand<QmitkViewInitializationView>::Pointer updateRendererListCommand =
00148 itk::SimpleMemberCommand<QmitkViewInitializationView>::New();
00149 updateRendererListCommand->SetCallbackFunction( this, &QmitkViewInitializationView::UpdateRendererList );
00150
00151 mitk::FocusManager* fm = mitk::GlobalInteraction::GetInstance()->GetFocusManager();
00152 m_CommandTag = fm->AddObserver(mitk::FocusEvent(), updateRendererListCommand);
00153
00154 this->UpdateRendererList();
00155 }
00156
00157 void QmitkViewInitializationView::UpdateRendererList()
00158 {
00159 vtkRenderWindow* focusedRenderWindow = NULL;
00160
00161 mitk::FocusManager* fm = mitk::GlobalInteraction::GetInstance()->GetFocusManager();
00162
00163 mitk::BaseRenderer::ConstPointer br = fm->GetFocused();
00164
00165 if (br.IsNotNull())
00166 {
00167 focusedRenderWindow = br->GetRenderWindow();
00168 }
00169
00170 int selectedItem = -1;
00171 int itemNumber = 0;
00172 m_Controls->m_lbRenderWindows->clear();
00173
00174
00175 for(mitk::BaseRenderer::BaseRendererMapType::iterator mapit = mitk::BaseRenderer::baseRendererMap.begin();
00176 mapit != mitk::BaseRenderer::baseRendererMap.end(); mapit++, itemNumber++)
00177 {
00178 if( (*mapit).second->GetName())
00179 {
00180 m_Controls->m_lbRenderWindows->addItem(QString((*mapit).second->GetName()));
00181 if(focusedRenderWindow==(*mapit).first)
00182 selectedItem = itemNumber;
00183 }
00184 }
00185
00186 if (selectedItem>=0)
00187 {
00188 m_Controls->m_lbRenderWindows->setCurrentRow(selectedItem);
00189 }
00190 else
00191 {
00192 m_Controls->m_lbRenderWindows->clearSelection();
00193 }
00194 }