#include <QmitkCloseProjectAction.h>
Public Member Functions | |
QmitkCloseProjectAction (berry::IWorkbenchWindow::Pointer window) | |
QmitkCloseProjectAction (const QIcon &icon, berry::IWorkbenchWindow::Pointer window) | |
Protected Slots | |
void | Run () |
Definition at line 34 of file QmitkCloseProjectAction.h.
QmitkCloseProjectAction::QmitkCloseProjectAction | ( | berry::IWorkbenchWindow::Pointer | window ) |
Definition at line 30 of file QmitkCloseProjectAction.cpp.
: QAction(0) { this->init(window); }
QmitkCloseProjectAction::QmitkCloseProjectAction | ( | const QIcon & | icon, |
berry::IWorkbenchWindow::Pointer | window | ||
) |
Definition at line 36 of file QmitkCloseProjectAction.cpp.
: QAction(0) { this->setIcon(icon); this->init(window); }
void QmitkCloseProjectAction::Run | ( | ) | [protected, slot] |
Definition at line 53 of file QmitkCloseProjectAction.cpp.
References berry::SmartPointer< TObjectType >::Cast(), berry::SmartPointer< TObjectType >::IsNotNull(), MITK_ERROR, mitk::BoolProperty::New(), mitk::NodePredicateProperty::New(), and mitk::NodePredicateNot::New().
{ try { /* Get the DataStorage and the MultiWidget */ mitk::DataStorageEditorInput::Pointer editorInput; mitk::DataStorage::Pointer storage; QmitkStdMultiWidgetEditor::Pointer multiWidgetEditor; berry::IEditorPart::Pointer editor = m_Window->GetActivePage()->GetActiveEditor(); if (editor.Cast<QmitkStdMultiWidgetEditor>().IsNull()) { editorInput = new mitk::DataStorageEditorInput(); storage = editorInput->GetDataStorageReference()->GetDataStorage(); } else { multiWidgetEditor = editor.Cast<QmitkStdMultiWidgetEditor>(); storage = multiWidgetEditor->GetEditorInput().Cast<mitk::DataStorageEditorInput>()->GetDataStorageReference()->GetDataStorage(); } //check if there is anything else then helper object in the storage if(storage->GetSubset(mitk::NodePredicateNot::New(mitk::NodePredicateProperty::New("helper object", mitk::BoolProperty::New(true))))->empty()) return; /* Ask, if the user is sure about that */ if (QMessageBox::question(NULL, "Remove all data?", "Are you sure that you want to close the current project? This will remove all data objects?", QMessageBox::Yes | QMessageBox::No) != QMessageBox::Yes) return; /* Remove everything */ mitk::DataStorage::SetOfObjects::ConstPointer nodesToRemove = storage->GetAll(); storage->Remove(nodesToRemove); /* Re-Add 2D renderer planes */ if (multiWidgetEditor.IsNotNull()) multiWidgetEditor->GetStdMultiWidget()->AddPlanesToDataStorage(); } catch (std::exception& e) { MITK_ERROR << "Exception caught during scene saving: " << e.what(); QMessageBox::warning(NULL, "Error", QString("An error occurred during Close Project: %1").arg(e.what())); } }