X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FwxMaracasIRMView.cxx;h=dba00aaf5bfb70c7cf363ce522d6bdf5cf553d52;hb=efe55c8afe89bd1d090c59513f2be82ad3ab9b0d;hp=01f52a75873a6559f839ef3cb39e71e80b964823;hpb=bf59a58c8e18d27d491ce9681c06e50c8213cb23;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasIRMView.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasIRMView.cxx index 01f52a7..dba00aa 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasIRMView.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasIRMView.cxx @@ -3,8 +3,8 @@ Program: wxMaracas Module: $RCSfile: wxMaracasIRMView.cxx,v $ Language: C++ - Date: $Date: 2009/04/01 16:16:59 $ - Version: $Revision: 1.1 $ + Date: $Date: 2009/05/29 13:39:56 $ + Version: $Revision: 1.9 $ Copyright: (c) 2002, 2003 License: @@ -16,22 +16,33 @@ =========================================================================*/ + // EOF - wxMaracasMPR.cxx #include "wxMaracasIRMView.h" +//#include "wxMaracasIRMViewPanel.h" +#include "wxMaracasIRMViewProp3DMHD.h" +#include "wxMaracasIRMViewProp3D.h" -wxMaracasIRMView* wxMaracasIRMView::instance=NULL; +#include +#include -wxMaracasIRMView::wxMaracasIRMView( wxWindow* parent) -: wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize){ +#include +#include - //createControls(); +wxMaracasIRMView* wxMaracasIRMView::instance=NULL; + +wxMaracasIRMView::wxMaracasIRMView( wxWindow* parent,std::string path) +: wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize){ + irmmanager = new wxMaracasIRMViewManager(); wxauimanager = new wxAuiManager(this); - std::string iconsdir = "/";//defaultdir; - iconsdir+= "/Icons"; + _path = path; + + std::string iconsdir = path; + iconsdir+="/data/Icons"; wxToolBar* toolbar = new ToolBar(this,iconsdir); wxAuiPaneInfo paneinfo; wxauimanager->AddPane(toolbar,paneinfo.ToolbarPane().Top()); @@ -39,36 +50,26 @@ wxMaracasIRMView::wxMaracasIRMView( wxWindow* parent) wxauimanager->Update(); createFileChooser(); + } wxMaracasIRMView::~wxMaracasIRMView( ){ } -void wxMaracasIRMView::loadProp3D(){ - - wxFileDialog* fildial = new wxFileDialog(this, wxString(_T("Select a STL file")),wxString(_T("")), - wxString(_T("")),wxString(_T("*.stl"))); - if(fildial->ShowModal()==wxID_OK){ - - wxString filename(fildial->GetDirectory() + "/"+fildial->GetFilename() ); - vtkProp3D* prop3D = irmmanager->getProp3D(filename.c_str()); - if(prop3D != NULL){ - this->addProp3D(prop3D); - } - - } - delete fildial; - +std::string wxMaracasIRMView::getPath(){ + return _path; } + + void wxMaracasIRMView::createFileChooser(){ } -wxMaracasIRMView* wxMaracasIRMView::getInstance(wxWindow* parent){ +wxMaracasIRMView* wxMaracasIRMView::getInstance(wxWindow* parent,std::string path){ if(instance==NULL){ - instance = new wxMaracasIRMView(parent); + instance = new wxMaracasIRMView(parent,path); } return instance; } @@ -81,75 +82,135 @@ void wxMaracasIRMView::setRenderer(vtkRenderer* renderer){ irmmanager->setRenderer(renderer); } +void wxMaracasIRMView::addRemoveActor(int propid, bool addremove){ + irmmanager->addRemoveActor(propid, addremove); +} + void wxMaracasIRMView::changeOpacity(int _propid, int value){ irmmanager->changeOpacity(_propid,value); } -void wxMaracasIRMView::changeIsoValue(int _propid, int value){ - +void wxMaracasIRMView::changeIsoValue(int propid, double value){ + irmmanager->changeIsoValue(propid, value); } -void wxMaracasIRMView::addProp3D(vtkProp3D* prop3D){ - int id = irmmanager->addProp3D(prop3D); - if(id!=-1){ - wxMaracasIRMViewProp3D* controlpan = new wxMaracasIRMViewProp3D(this, id); - wxAuiPaneInfo paneinfo; - wxauimanager->AddPane(controlpan); - - } - -} +void wxMaracasIRMView::changeColor(int propid, double red, double green, double blue){ + try{ + irmmanager->changeColor(propid, red, green, blue); -/** -** Implementation of viewProp3D -**/ + }catch(char* str){ -wxMaracasIRMViewProp3D::wxMaracasIRMViewProp3D(wxWindow* parent,int propid) -:wxMaracasIRMViewPanel(parent){ - createControls(); - this->_propid = propid; -} + wxString s( str,wxConvUTF8 ); + wxMessageDialog* diag = new wxMessageDialog(this, s, s, wxICON_ERROR); + diag->ShowModal(); + delete diag; -wxMaracasIRMViewProp3D::~wxMaracasIRMViewProp3D(){ + } } -void wxMaracasIRMViewProp3D::createControls(){ +void wxMaracasIRMView::onLoadImageFile(){ + + wxString mhd(_T("mhd")); + wxString stl(_T("stl")); + + wxFileDialog* fildial = new wxFileDialog(this, wxString(_T("Select a STL file")),wxString(_T("")), + wxString(_T("")),wxString(_T("STL files (*.stl)|*.stl|MHD files (*.mhd)|*.mhd")) ); - wxString choices[2]; - choices[0] = "On"; - choices[1] = "Off"; - radiob = new wxRadioBox(this,-1,wxString(_T("Actor")),wxDefaultPosition,wxDefaultSize,2,choices,1,wxRA_SPECIFY_COLS); - this->addControl(radiob); - Connect(radiob->GetId(), wxEVT_COMMAND_RADIOBOX_SELECTED, (wxObjectEventFunction)&wxMaracasIRMViewProp3D::onRadioBoxChange); + if(fildial->ShowModal()==wxID_OK){ + wxString filename = fildial->GetFilename(); + wxString pathfile(fildial->GetDirectory() + _T("/") + filename); + if(filename.EndsWith(mhd)){ + loadPropMHD(pathfile,filename); + }else if(filename.EndsWith(stl)){ + loadProp3D(pathfile,filename); + } + } + delete fildial; - opacity = new wxSlider(this, -1,0,0,100); - this->addControl(opacity); - Connect(opacity->GetId(), wxEVT_SCROLL_CHANGED, (wxObjectEventFunction)&wxMaracasIRMViewProp3D::onOpacityRelease); +} +void wxMaracasIRMView::loadPropMHD(wxString filename, wxString dataname){ + + std::string s = std::string(filename.mb_str()); + vtkImageData* img = irmmanager->getImageData(s); + if(img!=NULL){ + s = std::string(dataname.mb_str()); + addPropMHD(img, s); + } + + - isovalue = new wxSlider(this, -1,0,0,100); - this->addControl(isovalue); - Connect(isovalue->GetId(), wxEVT_SCROLL_CHANGED, (wxObjectEventFunction)&wxMaracasIRMViewProp3D::onIsoValueRelease); } -void wxMaracasIRMViewProp3D::onRadioBoxChange(wxCommandEvent& event){ +void wxMaracasIRMView::addPropMHD(vtkImageData* imgdata, std::string dataname){ + try{ + int id = irmmanager->addPropMHD(imgdata,dataname); + if(id!=-1){ + + wxMaracasIRMViewPanel* controlpan = new wxMaracasIRMViewProp3DMHD(this, id); + int maxiso = irmmanager->getMaxIsoValue(id); + ((wxMaracasIRMViewProp3DMHD*)controlpan)->createControls(maxiso); + addIRMViewPanel(controlpan, dataname); + } + + }catch(char* str){ + + std::cout << "Exception : " << str << '\n'; + wxMessageDialog* diag = new wxMessageDialog(this, wxString( str,wxConvUTF8 ), wxString( str,wxConvUTF8 ), wxICON_ERROR); + diag->ShowModal(); + + } } -void wxMaracasIRMViewProp3D::onActionButtonPressedEliminate( wxCommandEvent& event ){ +void wxMaracasIRMView::loadProp3D(wxString filename, wxString dataname){ + std::string s = std::string(filename.mb_str()); + vtkProp3D* prop3D = irmmanager->getProp3D(s); + if(prop3D != NULL){ + s = std::string(dataname.mb_str() ); + this->addProp3D(prop3D,s); + }else{ + //TODO msj to the user indicating error in file + } + + + } -void wxMaracasIRMViewProp3D::onOpacityRelease(wxScrollEvent& event ){ +void wxMaracasIRMView::addProp3D(vtkProp3D* prop3D, std::string dataname){ + try{ + int id = irmmanager->addProp3D(prop3D,dataname); + if(id!=-1){ + wxMaracasIRMViewPanel* controlpan = new wxMaracasIRMViewProp3D(this, id); + addIRMViewPanel(controlpan, dataname); + } + }catch(char* str){ + std::cout << "Exception : " << str << '\n'; + wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR); + diag->ShowModal(); + } + +} +void wxMaracasIRMView::addIRMViewPanel(wxMaracasIRMViewPanel* irmview, std::string dataname){ - wxMaracasIRMView::getInstance()->changeOpacity(_propid,opacity->GetValue()); + wxString s(dataname.c_str(),wxConvUTF8 ); + wxAuiPaneInfo paneinfo; + wxauimanager->AddPane(irmview, paneinfo.DefaultPane().Centre().DestroyOnClose().Caption(s)); + wxauimanager->Update(); + + +} +void wxMaracasIRMView::deleteActor(int propid){ + try{ + irmmanager->deleteActor(propid); + }catch(char* e){ + + } } -void wxMaracasIRMViewProp3D::onIsoValueRelease(wxScrollEvent& event ){ - wxMaracasIRMView::getInstance()->changeIsoValue(_propid,isovalue->GetValue()); -} /** @@ -163,9 +224,19 @@ ToolBar::ToolBar(wxWindow * parent,std::string iconsdir) std::string iconfil = iconsdir; - iconfil+= "/Open.png"; + //iconfil+= "/OpenImage.png"; + //wxBitmap* bitmap0 = new wxBitmap(wxString(iconfil.c_str(),wxConvUTF8), wxBITMAP_TYPE_PNG); + wxBitmap bitmap0(OpenImage_xpm); + this->AddTool(0, wxString(_T("test")),bitmap0); + + /*iconfil+= "/Open.png"; wxBitmap* bitmap2 = new wxBitmap(wxString(iconfil.c_str(),wxConvUTF8), wxBITMAP_TYPE_PNG); - this->AddTool(2, wxString(_T("test")),*bitmap2); + this->AddTool(2, wxString(_T("test")),*bitmap2); */ + + /*iconfil = iconsdir; + iconfil+= "/Open.png"; + wxBitmap* bitmap30 = new wxBitmap(wxString(iconfil.c_str(),wxConvUTF8), wxBITMAP_TYPE_PNG); + this->AddTool(30, wxString(_T("test")),*bitmap30);*/ this->Realize(); @@ -174,12 +245,15 @@ ToolBar::ToolBar(wxWindow * parent,std::string iconsdir) ToolBar::~ToolBar(void){ } +void ToolBar::onLoadImageFile(wxCommandEvent& event){ + wxMaracasIRMView::getInstance()->onLoadImageFile(); +} -void ToolBar::onLoadConfig(wxCommandEvent& event){ - wxMaracasIRMView::getInstance()->loadProp3D(); -} BEGIN_EVENT_TABLE(ToolBar, wxToolBar) - EVT_MENU(2, ToolBar::onLoadConfig) + EVT_MENU(0, ToolBar::onLoadImageFile) + END_EVENT_TABLE() + +