X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=appli%2FImageMPR%2FImageMPR.cxx;h=402baff2c1b1c4a074f6da2af00f34b50fe3692b;hb=48363731d62d46ffad8ca257326cc147a92ab681;hp=0100a138a5faadb54c3841b5c0fb0baa299c5435;hpb=d1d816d1eaf980d5cd266798b8f7a0bbb089a383;p=cpPlugins.git diff --git a/appli/ImageMPR/ImageMPR.cxx b/appli/ImageMPR/ImageMPR.cxx index 0100a13..402baff 100644 --- a/appli/ImageMPR/ImageMPR.cxx +++ b/appli/ImageMPR/ImageMPR.cxx @@ -1,8 +1,10 @@ #include "ImageMPR.h" +#include "MementoState.h" #include "ui_ImageMPR.h" #include #include +#include #include #include @@ -26,7 +28,9 @@ ImageMPR::ImageMPR( QWidget* parent ) m_MeshReaderClass( "" ), m_MeshWriterClass( "" ), m_MeshCutterClass( "" ), - m_Image( NULL ) + m_Image( NULL ), + m_state(0), + m_max_state(0) { this->m_UI->setupUi( this ); @@ -56,6 +60,14 @@ ImageMPR::ImageMPR( QWidget* parent ) this->m_UI->actionOpenInputPolyData, SIGNAL( triggered( ) ), this, SLOT( _triggered_actionOpenInputPolyData( ) ) ); + QObject::connect( + this->m_UI->actionUndo, SIGNAL(triggered()), + this, SLOT(_triggered_actionUndo()) + ); + QObject::connect( + this->m_UI->actionRedo, SIGNAL(triggered()), + this, SLOT(_triggered_actionRedo()) + ); // Start: load all disponible plugins this->_LoadPlugins( @@ -272,6 +284,9 @@ _triggered_actionOpenInputImage( ) this->m_MPRObjects->ActivateInteractors( ); this->m_MPRObjects->ResetCameras( ); this->m_MPRObjects->RenderAll( ); + + MementoState(m_state, this->m_Image); + this->m_state++; } else QMessageBox::critical( @@ -417,7 +432,16 @@ _triggered_actionImageToImage( ) if( this->m_Image.IsNotNull( ) ) this->m_MPRObjects->SetImage( this->m_Image->GetVTK< vtkImageData >( ) - ); + + ); + + + MementoState(this->m_state, this->m_Image); + this->m_state++; + if (this->m_state > this->m_max_state) + { + this->m_max_state = this->m_state; + } } else QMessageBox::critical( @@ -477,4 +501,50 @@ _triggered_actionImageToMesh( ) ); } +// ------------------------------------------------------------------------- +void ImageMPR:: +_triggered_actionUndo() +{ + MementoState memento = MementoState(); + + if (this->m_state>1) + { + this->m_state--; + this->m_MPRObjects->SetImage( + memento.getMemento(this->m_state)->GetOutput() + ); + } else + { + QMessageBox::warning( + this, + tr("message"), + tr("No history to undo") + ); + } + +} + +// ------------------------------------------------------------------------- +void ImageMPR:: +_triggered_actionRedo() +{ + MementoState memento = MementoState(); + if (this->m_state + 1 <= m_max_state) + { + this->m_state++; + this->m_MPRObjects->SetImage( + memento.getMemento(this->m_state)->GetOutput() + ); + } else + { + QMessageBox::warning( + this, + tr("message"), + tr("No history to redo") + ); + } + +} + + // eof - $RCSfile$