1 /*=========================================================================
4 Module: $RCSfile: wxMaracasRendererView.cxx,v $
7 =========================================================================*/
9 #include "wxMaracasRendererView.h"
11 #include <wx/colordlg.h>
12 #include <wx/bmpbuttn.h>
14 #include <OpenImage.xpm>
17 wxMaracasRendererView* wxMaracasRendererView::instance=NULL;
22 wxMaracasRendererView::wxMaracasRendererView(wxWindow* parent,std::string path)
23 : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize){
25 wxauimanager = new wxAuiManager(this);
30 std::string iconsdir = path;
31 iconsdir+="/data/Icons";
32 this->_toolb = new ToolBarRenderer(this,iconsdir);
33 wxStaticText* txt = new wxStaticText(this, -1, wxString(_T(" Open File ")));
34 wxAuiPaneInfo paneinfo;
35 wxauimanager->AddPane(txt,paneinfo.ToolbarPane().Top());
36 wxauimanager->AddPane(_toolb,paneinfo.ToolbarPane().Top());
38 wxauimanager->Update();
44 wxMaracasRendererView::~wxMaracasRendererView( )
50 ** Gets class instance correponding to given parameters
52 wxMaracasRendererView* wxMaracasRendererView::getInstance(wxWindow* parent,std::string path)
56 instance = new wxMaracasRendererView(parent,path);
64 wxMaracasRendererView* wxMaracasRendererView::getInstance()
70 ** Gets path for the given panel
72 std::string wxMaracasRendererView::getPath()
78 ** Returns internal panel
80 wxMaracasRenderTabbedPanel* wxMaracasRendererView::getTabbedPanel(int id) throw(char*)
83 for(i = 0; i < (tabsVector.size()); i++)
85 if(tabsVector[i]->getPropIdV() == id)
96 void wxMaracasRendererView::setRenderer(vtkRenderer* renderer)
101 void wxMaracasRendererView::setVtkBaseView(wxVtk3DBaseView* vbv)
107 ** Called when an image file is opened
109 void wxMaracasRendererView::onLoadImageFile()
111 wxString mhd(_T("mhd"));
113 wxFileDialog* fildial = new wxFileDialog(this, wxString(_T("Select a MHD file")), wxString(_T("")),
114 wxString(_T("")), wxString(_T("MHD files (*.mhd)|*.mhd")) );
116 if(fildial->ShowModal()==wxID_OK)
118 wxString filename = fildial->GetFilename();
119 files.push_back( std::string(filename.mb_str()) );
120 wxString pathfile(fildial->GetDirectory() + _T("/") + filename);
122 if(filename.EndsWith(mhd))
124 std::string sPath = std::string(pathfile.mb_str());
125 std::string sFileName = std::string(filename.mb_str());
126 printf("wxMaracasRendererView::onLoadImageFile->Opening file... \n");
127 addVolumes(NULL, sPath, sFileName);
133 ** Constructs and adds internal panel
135 void wxMaracasRendererView::addPanels(wxMaracasRenderTabbedPanel* wxtabs, vtkImageData* img, std::string pathfile, std::string filename)
137 wxString s(filename.c_str(),wxConvUTF8);
139 wxtabs->createControls(img, pathfile, filename);
141 wxAuiPaneInfo paneinfo;
142 wxauimanager->AddPane(wxtabs, paneinfo.DefaultPane().Centre().DestroyOnClose().Caption(s));
143 wxauimanager->Update();
147 ** Returns internal panel
149 void wxMaracasRendererView::addVolumes(vtkImageData* img, std::string pathfile, std::string filename)
151 wxMaracasRenderTabbedPanel* wxtabs = new wxMaracasRenderTabbedPanel(this, _idCount, baseView);
152 wxtabs->setRenderer(_renderer);
154 tabsVector.push_back(wxtabs);
155 addPanels(wxtabs, img, pathfile, filename);
160 ** Deletes current volume
162 void wxMaracasRendererView::deleteVolume(int volid)
165 getTabbedPanel(volid)->deleteVolume(volid);
169 ** Adds or removes a volume rendering actor
171 void wxMaracasRendererView::addRemoveActorVol(int id, bool addremove)
173 //wxtabs->addRemoveActorV(id, addremove);
177 ** Adds or removes a surface rendering actor
179 void wxMaracasRendererView::addRemoveSurf1Actor(int id, bool addremove)
181 //wxtabs->addRemoveActorSA(id, addremove);
185 ** Adds or removes a surface rendering actor
187 void wxMaracasRendererView::addRemoveSurf2Actor(int id, bool addremove)
189 //wxtabs->addRemoveActorSB(id, addremove);
193 ** Adds or removes a surface rendering actor
195 void wxMaracasRendererView::addRemoveSurf3Actor(int id, bool addremove)
197 //wxtabs->addRemoveActorSC(id, addremove);
201 ** Gets opened file names
203 std::vector<std::string> wxMaracasRendererView::getFiles()
211 ToolBarRenderer::ToolBarRenderer(wxWindow * parent,std::string iconsdir)
212 : wxToolBar(parent, -1, wxDefaultPosition, wxDefaultSize)
214 std::string iconfil = iconsdir;
216 //iconfil+= "/OpenImage.png";
217 //wxBitmap* bitmap0 = new wxBitmap(wxString(iconfil.c_str(),wxConvUTF8), wxBITMAP_TYPE_PNG);
218 wxBitmap bitmap0(OpenImage_xpm);
219 this->AddTool(1, wxString(_T("test")),bitmap0, NULL, wxITEM_NORMAL, wxString(_T("Open File")));
223 _evthand = new ToolBarEventHandlerRenderer();
224 this->SetEventHandler(_evthand);
228 ToolBarRenderer::~ToolBarRenderer(void){
231 ToolBarEventHandlerRenderer::ToolBarEventHandlerRenderer()
234 ToolBarEventHandlerRenderer::~ToolBarEventHandlerRenderer(){
237 void ToolBarEventHandlerRenderer::onLoadImageFile(wxCommandEvent& event){
238 wxMaracasRendererView::getInstance()->onLoadImageFile();
242 BEGIN_EVENT_TABLE(ToolBarEventHandlerRenderer, wxEvtHandler)
243 EVT_MENU(1, ToolBarEventHandlerRenderer::onLoadImageFile)