]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/CutModule/interface/CutModelMainPanel.cxx
Undo Redo
[creaMaracasVisu.git] / lib / maracasVisuLib / src / CutModule / interface / CutModelMainPanel.cxx
index f29854d71a5f14001294134947cdf6778fdf0712..2991814153232b6e0f4aa64d6e9c9f253a093b6d 100644 (file)
@@ -3,8 +3,8 @@
   Program:   wxMaracas
   Module:    $RCSfile: CutModelMainPanel.cxx,v $
   Language:  C++
-  Date:      $Date: 2009/09/01 14:01:34 $
-  Version:   $Revision: 1.2 $
+  Date:      $Date: 2009/09/08 08:14:25 $
+  Version:   $Revision: 1.3 $
 
   Copyright: (c) 2002, 2003
   License:
@@ -20,7 +20,8 @@
 // EOF - wxMaracasMPR.cxx
 
 #include "CutModelMainPanel.h"
-
+#include "HistogramDialog.h"
+#include "creaSystem.h"
 
 #include <wx/colordlg.h>
 #include <wx/bmpbuttn.h>
 #include <Redo.xpm>
 #include <OkAll.xpm>
 
+
+
 CutModelMainPanel* CutModelMainPanel::instance=NULL;
 
-CutModelMainPanel::CutModelMainPanel( wxWindow* parent)
+CutModelMainPanel::CutModelMainPanel( wxWindow* parent, std::string path)
 : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize){
 
        cutmanager=NULL;
 
-       initialize();
+       initialize(path);
 
 }
 CutModelMainPanel::~CutModelMainPanel( ){
        
-
+       delete cutmanager;
 }
 
-void CutModelMainPanel::initialize(){
-       cutmanager = new CutModelManager();
+void CutModelMainPanel::initialize(std::string path){
+       
+       cutmanager = new CutModelManager(path);
 
        _panelid = 0;
        _wxauimanager = new wxAuiManager(this); 
@@ -57,16 +61,19 @@ void CutModelMainPanel::initialize(){
        _wxauimanager->Update();
 }
 
-CutModelMainPanel* CutModelMainPanel::getInstance(wxWindow* parent){
+CutModelMainPanel* CutModelMainPanel::getInstance(wxWindow* parent, std::string path){
        if(instance==NULL){
-               instance = new CutModelMainPanel(parent);
+               if(parent == NULL){
+                       parent = new wxFrame();
+               }
+               instance = new CutModelMainPanel(parent, path);
        }
        return instance;
 }
 
-CutModelMainPanel* CutModelMainPanel::getInstance(){
+/*CutModelMainPanel* CutModelMainPanel::getInstance(){
        return instance;
-}
+}*/
 
 void CutModelMainPanel::setImageData(vtkImageData* img){
        try{
@@ -183,11 +190,26 @@ CutModelView* CutModelMainPanel::getModelView(int id)throw( CutModelException){
        return current;
 }
 void CutModelMainPanel::onUndo(){
+       try{
+               checkInvariant();               
+               int result = cutmanager->Undo();
 
+       }catch(CutModelException e){
+               showErrorDialog(e.getCause());
+       }
+       
 }
 
 void CutModelMainPanel::onRedo(){
 
+       try{
+               checkInvariant();               
+               int result = cutmanager->Redo();
+
+       }catch(CutModelException e){
+               showErrorDialog(e.getCause());
+       }
+       
 }
 
 void CutModelMainPanel::changeOpacity(int id,int opacity){
@@ -246,7 +268,8 @@ void CutModelMainPanel::updateActorDirection(int id){
 
 void CutModelMainPanel::ExecuteCut(int id, double* range, bool isinside){
        try{
-               checkInvariant();
+               checkInvariant();               
+
                cutmanager->ExecuteCut(id, range, isinside);
        }catch(CutModelException e){
                showErrorDialog(e.getCause());
@@ -270,7 +293,23 @@ vtkImageData* CutModelMainPanel::GetResultImage(){
 }
 
 void CutModelMainPanel::ShowStatistics(int id){
-    
+
+       checkInvariant();
+       HistogramDialog *histo = new HistogramDialog(this, _T("Statistics"));
+
+       histo->initializeHistogram(cutmanager->GetResultImage());
+
+       histo->ShowModal();
+
+       delete histo;
+}
+
+void CutModelMainPanel::SaveCutModelData(std::string filename){
+       cutmanager->SaveCutModelData(filename);
+}
+
+void CutModelMainPanel::LoadCutModelData(std::string filename){
+    cutmanager->LoadCutModelData(filename);
 }
 /**
 **