Public Member Functions | Protected Slots

QmitkCloseProjectAction Class Reference

#include <QmitkCloseProjectAction.h>

Collaboration diagram for QmitkCloseProjectAction:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 QmitkCloseProjectAction (berry::IWorkbenchWindow::Pointer window)
 QmitkCloseProjectAction (const QIcon &icon, berry::IWorkbenchWindow::Pointer window)

Protected Slots

void Run ()

Detailed Description

Definition at line 34 of file QmitkCloseProjectAction.h.


Constructor & Destructor Documentation

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);
}

Member Function Documentation

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()));
  }
}

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines