]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasRendererView.cxx
9ed39f0dd062afb368733c35627e031c98f863cf
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxMaracasRendererView.cxx
1 /*=========================================================================
2
3   Program:   wxMaracas
4   Module:    $RCSfile: wxMaracasRendererView.cxx,v $
5   Language:  C++
6
7 =========================================================================*/
8
9 #include "wxMaracasRendererView.h"
10
11 #include <wx/colordlg.h>
12 #include <wx/bmpbuttn.h>
13
14 #include <OpenImage.xpm>
15 #include <Color.xpm>
16
17 wxMaracasRendererView* wxMaracasRendererView::instance=NULL;
18
19 /**
20 ** Class constructor
21 **/
22 wxMaracasRendererView::wxMaracasRendererView(wxWindow* parent,std::string path)
23 : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize){
24
25         wxauimanager = new wxAuiManager(this);
26
27         _path = path;
28
29         wxtabs = new wxMaracasRenderTabbedPanel(this);
30
31         std::string iconsdir = path;
32         iconsdir+="/data/Icons";
33         this->_toolb = new ToolBarRenderer(this,iconsdir);
34         wxStaticText* txt = new wxStaticText(this, -1, wxString(_T("  Open File  ")));
35         wxAuiPaneInfo paneinfo;
36         wxauimanager->AddPane(txt,paneinfo.ToolbarPane().Top());
37         wxauimanager->AddPane(_toolb,paneinfo.ToolbarPane().Top());
38
39         wxauimanager->Update(); 
40 }
41
42 /**
43 ** Class destructor
44 **/
45 wxMaracasRendererView::~wxMaracasRendererView( )
46 {
47         delete _toolb;
48 }
49
50 /**
51 **
52 **/
53 std::string wxMaracasRendererView::getPath()
54 {
55         return _path;
56 }
57
58 /**
59 **
60 **/
61 wxMaracasRendererView* wxMaracasRendererView::getInstance(wxWindow* parent,std::string path)
62 {
63         if(instance==NULL)
64         {
65                 instance = new wxMaracasRendererView(parent,path);
66         }
67         return instance;
68 }
69
70 /**
71 **
72 **/
73 wxMaracasRendererView* wxMaracasRendererView::getInstance()
74 {
75         return instance;
76 }
77
78 /**
79 **
80 **/
81 void wxMaracasRendererView::setRenderer(vtkRenderer*  renderer)
82 {
83         wxtabs->setRenderer(renderer);
84 }
85
86 /**
87 ** Adds or removes a volume rendering actor
88 **/
89 void wxMaracasRendererView::addRemoveActorVol(int id, bool addremove)
90 {
91         wxtabs->addRemoveActorV(id, addremove);
92 }
93
94 /**
95 ** Adds or removes a surface rendering actor
96 **/
97 void wxMaracasRendererView::addRemoveSurf1Actor(int id, bool addremove)
98 {
99         wxtabs->addRemoveActorSA(id, addremove);
100 }
101
102 /**
103 ** Adds or removes a surface rendering actor
104 **/
105 void wxMaracasRendererView::addRemoveSurf2Actor(int id, bool addremove)
106 {
107         wxtabs->addRemoveActorSB(id, addremove);
108 }
109
110 /**
111 ** Adds or removes a surface rendering actor
112 **/
113 void wxMaracasRendererView::addRemoveSurf3Actor(int id, bool addremove)
114 {
115         wxtabs->addRemoveActorSC(id, addremove);
116 }
117
118 /**
119 ** Called when an image file is opened
120 **/
121 void wxMaracasRendererView::onLoadImageFile()
122 {
123         wxString mhd(_T("mhd"));        
124
125         wxFileDialog* fildial = new wxFileDialog(this, wxString(_T("Select a MHD file")),wxString(_T("")),
126                 wxString(_T("")),wxString(_T("MHD files (*.mhd)|*.mhd")) );
127
128         if(fildial->ShowModal()==wxID_OK)
129         {
130         wxString filename = fildial->GetFilename();
131                 wxString pathfile(fildial->GetDirectory() + _T("/") + filename);
132                 if(filename.EndsWith(mhd))
133                 {
134                         addPanels(pathfile, filename);
135                 }
136         }
137         delete fildial;
138 }
139
140 /**
141 ** Constructs and adds internal panel
142 **/
143 void wxMaracasRendererView::addPanels(wxString pathfile, wxString filename)
144 {
145         wxString s(filename.c_str(),wxConvUTF8);
146         
147         wxtabs->createControls(pathfile, filename);
148         wxAuiPaneInfo paneinfo;
149         wxauimanager->AddPane(wxtabs, paneinfo.DefaultPane().Centre().DestroyOnClose().Caption(s));
150         wxauimanager->Update();
151 }
152
153 /**
154 ** Returns internal panel
155 **/
156 wxMaracasRenderTabbedPanel* wxMaracasRendererView::getTabbedPanel()
157 {
158         return wxtabs;
159 }
160
161 /**
162 ** Deletes current volume
163 **/
164 void wxMaracasRendererView::deleteVolume(int volid)
165 {
166         wxtabs->deleteVolume(volid);
167 }
168
169 /**
170 **
171 **/
172 ToolBarRenderer::ToolBarRenderer(wxWindow * parent,std::string iconsdir)
173 : wxToolBar(parent, -1, wxDefaultPosition, wxDefaultSize)
174 {
175         std::string iconfil = iconsdir;
176
177         //iconfil+= "/OpenImage.png";
178         //wxBitmap* bitmap0 = new wxBitmap(wxString(iconfil.c_str(),wxConvUTF8), wxBITMAP_TYPE_PNG);
179         wxBitmap bitmap0(OpenImage_xpm);
180         this->AddTool(1, wxString(_T("test")),bitmap0, NULL, wxITEM_NORMAL, wxString(_T("Open File")));
181
182         /*iconfil+= "/Open.png";
183         wxBitmap* bitmap2 = new wxBitmap(wxString(iconfil.c_str(),wxConvUTF8), wxBITMAP_TYPE_PNG);
184         this->AddTool(2, wxString(_T("test")),*bitmap2);        */
185
186         /*iconfil = iconsdir;
187         iconfil+= "/Open.png";
188         wxBitmap* bitmap30 = new wxBitmap(wxString(iconfil.c_str(),wxConvUTF8), wxBITMAP_TYPE_PNG);
189         this->AddTool(30, wxString(_T("test")),*bitmap30);*/
190
191         this->Realize();
192
193         _evthand = new ToolBarEventHandlerRenderer();
194         this->SetEventHandler(_evthand);
195
196 }
197
198 ToolBarRenderer::~ToolBarRenderer(void){
199 }
200
201 ToolBarEventHandlerRenderer::ToolBarEventHandlerRenderer()
202 : wxEvtHandler(){
203 }
204 ToolBarEventHandlerRenderer::~ToolBarEventHandlerRenderer(){
205 }
206
207 void ToolBarEventHandlerRenderer::onLoadImageFile(wxCommandEvent& event){
208         wxMaracasRendererView::getInstance()->onLoadImageFile();
209 }
210
211
212 BEGIN_EVENT_TABLE(ToolBarEventHandlerRenderer, wxEvtHandler)
213         EVT_MENU(1, ToolBarEventHandlerRenderer::onLoadImageFile)
214 END_EVENT_TABLE()
215
216