1 /*=========================================================================
4 Module: $RCSfile: CutModel2MainPanel.cxx,v $
6 Date: $Date: 2009/11/19 16:34:43 $
7 Version: $Revision: 1.3 $
9 Copyright: (c) 2002, 2003
12 This software is distributed WITHOUT ANY WARRANTY; without even
13 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
14 PURPOSE. See the above copyright notice for more information.
16 =========================================================================*/
20 // EOF - wxMaracasMPR.cxx
22 #include "CutModel2MainPanel.h"
23 #include "HistogramDialog.h"
24 #include "creaSystem.h"
26 #include <wx/colordlg.h>
27 #include <wx/bmpbuttn.h>
36 CutModel2MainPanel* CutModel2MainPanel::instance=NULL;
38 CutModel2MainPanel::CutModel2MainPanel( wxWindow* parent, std::string path)
39 : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize){
46 CutModel2MainPanel::~CutModel2MainPanel( ){
51 void CutModel2MainPanel::initialize(std::string path){
53 cutmanager = new CutModelManager(path);
56 _wxauimanager = new wxAuiManager(this);
58 wxAuiPaneInfo paneinfo;
59 _wxauimanager->AddPane(new ToolBarCutModel2(this),paneinfo.ToolbarPane().Top());
61 _wxauimanager->Update();
64 CutModel2MainPanel* CutModel2MainPanel::getInstance(wxWindow* parent, std::string path){
67 parent = new wxFrame();
69 instance = new CutModel2MainPanel(parent, path);
74 /*CutModel2MainPanel* CutModel2MainPanel::getInstance(){
78 void CutModel2MainPanel::setImageData(vtkImageData* img){
81 cutmanager->setImageData(img);
82 }catch(CutModel2Exception e){
83 showErrorDialog(e.getCause());
87 void CutModel2MainPanel::setInteractor(vtkRenderWindowInteractor* interactor){
90 cutmanager->setInteractor(interactor);
91 }catch(CutModelException e){
92 showErrorDialog(e.getCause());
96 void CutModel2MainPanel::setRenderer(vtkRenderer* renderer){
99 cutmanager->setRenderer(renderer);
100 }catch(CutModel2Exception e){
101 showErrorDialog(e.getCause());
105 void CutModel2MainPanel::checkInvariant()throw (CutModelException){
106 if(cutmanager==NULL){
107 throw CutModelException("The manager is not initialize");
111 void CutModel2MainPanel::showErrorDialog(std::string str){
112 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str.c_str(),wxConvUTF8 ), wxString(str.c_str(),wxConvUTF8 ), wxICON_ERROR);
116 void CutModel2MainPanel::RemoveActor(int id){
120 for(int i = 0; i < viewpanels.size()-1;i++){
121 if(viewpanels[i]->getId()==id){
122 for(int j = i; j < viewpanels.size()-1;j++){
123 viewpanels[j]=viewpanels[j+1];
125 i = viewpanels.size();
128 viewpanels.pop_back();
131 cutmanager->RemoveActor(id);
133 }catch(CutModel2Exception e){
134 showErrorDialog(e.getCause());
138 void CutModel2MainPanel::onAddCutModel2(){
142 int id = addNewViewPanel();
143 cutmanager->onAddCutModel(id, getModelView(id));
147 ShowCurrentPanel(id);
149 }catch(CutModel2Exception e){
150 showErrorDialog(e.getCause());
153 void CutModel2MainPanel::ShowCurrentPanel(int id){
154 for(int i = 0; i < viewpanels.size();i++){
155 if(viewpanels[i]->getId()==id){
156 _wxauimanager->GetPane(viewpanels[i]).Show(true);
157 cutmanager->RefreshActor(id);
159 _wxauimanager->GetPane(viewpanels[i]).Show(false);
162 _wxauimanager->Update();
164 int CutModel2MainPanel::addNewViewPanel()throw( CutModelException){
166 CutModelView* viewpanel = new CutModelView(this,cutmanager->getImageRange());
168 wxAuiPaneInfo paneinfo0;
169 _wxauimanager->AddPane(viewpanel, paneinfo0.DefaultPane().DestroyOnClose().Centre());
170 _wxauimanager->Update();
172 viewpanel->setId(_panelid);
173 viewpanels.push_back(viewpanel);
175 return viewpanel->getId();
179 CutModel2View* CutModel2MainPanel::getModelView(int id)throw( CutModel2Exception){
181 CutModelView* current = NULL;
182 for(int i = 0; i < viewpanels.size();i++){
183 if(viewpanels[i]->getId()==id){
184 current = viewpanels[i];
188 std::string s = "Id not found";
189 throw CutModel2Exception(s);
193 void CutModel2MainPanel::onUndo(){
196 int result = cutmanager->Undo();
198 }catch(CutModelException e){
199 showErrorDialog(e.getCause());
204 void CutModel2MainPanel::onRedo(){
208 int result = cutmanager->Redo();
210 }catch(CutModelException e){
211 showErrorDialog(e.getCause());
216 void CutModel2MainPanel::changeOpacity(int id,int opacity){
219 cutmanager->changeOpacity(id, opacity);
221 }catch(CutModelException e){
222 showErrorDialog(e.getCause());
226 void CutModel2MainPanel::ShowViewBox(int id,bool check){
229 cutmanager->ShowViewBox(id, check);
231 }catch(CutModelException e){
232 showErrorDialog(e.getCause());
235 void CutModel2MainPanel::ShowPopUpMenu(int id){
236 showErrorDialog("test");
238 void CutModel2MainPanel::changeColor(int id,double r,double g,double b){
242 cutmanager->changeColor(id, r, g, b);
244 }catch(CutModel2Exception e){
245 showErrorDialog(e.getCause());
249 void CutModel2MainPanel::ChangeShape(int id,int selection){
253 cutmanager->ChangeShape(id, selection);
255 }catch(CutModel2Exception e){
256 showErrorDialog(e.getCause());
259 void CutModel2MainPanel::updateActorDirection(int id){
263 cutmanager->updateActorDirection(id);
265 }catch(CutModel2Exception e){
266 showErrorDialog(e.getCause());
270 void CutModel2MainPanel::ExecuteCut(int id, double* range, bool isinside){
274 cutmanager->ExecuteCut(id, range, isinside);
275 }catch(CutModelException e){
276 showErrorDialog(e.getCause());
280 void CutModel2MainPanel::ExecuteAll(){
281 for(int i = 0; i < viewpanels.size();i++){
282 viewpanels[i]->ExecuteCut();
286 vtkImageData* CutModel2MainPanel::GetResultImage(){
289 return cutmanager->GetResultImage();
290 }catch(CutModel2Exception e){
291 showErrorDialog(e.getCause());
296 void CutModel2MainPanel::ShowStatistics(int id){
299 HistogramDialog *histo = new HistogramDialog(this, _T("Statistics"));
301 histo->initializeHistogram(cutmanager->GetResultImage());
308 void CutModel2MainPanel::SaveCutModel2Data(std::string filename){
309 cutmanager->SaveCutModelData(filename);
312 void CutModel2MainPanel::LoadCutModel2Data(std::string filename){
313 cutmanager->LoadCutModelData(filename);
319 ToolBarCutModel2::ToolBarCutModel2(wxWindow * parent)
320 : wxToolBar(parent, -1, wxDefaultPosition, wxDefaultSize)
323 wxBitmap bitmap10(Add_xpm);
324 this->AddTool(10, wxString(_T("Add")),bitmap10);
326 this->AddSeparator();
328 wxBitmap bitmap20(Undo_xpm);
329 this->AddTool(20, wxString(_T("Undo")),bitmap20);
331 wxBitmap bitmap30(Redo_xpm);
332 this->AddTool(30, wxString(_T("Redo")),bitmap30);
334 this->AddSeparator();
336 wxBitmap bitmap40(OkAll_xpm);
337 this->AddTool(40, wxString(_T("Ok All")),bitmap40);
341 _evthand = new ToolBarEventHandlerCutModel2();
342 this->SetEventHandler(_evthand);
346 ToolBarCutModel2::~ToolBarCutModel2(void){
349 ToolBarEventHandlerCutModel2::ToolBarEventHandlerCutModel2()
352 ToolBarEventHandlerCutModel2::~ToolBarEventHandlerCutModel2(){
355 void ToolBarEventHandlerCutModel2::onAdd(wxCommandEvent& event){
356 CutModel2MainPanel::getInstance()->onAddCutModel2();
359 void ToolBarEventHandlerCutModel2::onUndo(wxCommandEvent& event){
360 CutModel2MainPanel::getInstance()->onUndo();
363 void ToolBarEventHandlerCutModel2::onRedo(wxCommandEvent& event){
364 CutModel2MainPanel::getInstance()->onRedo();
367 void ToolBarEventHandlerCutModel2::onExecuteAll(wxCommandEvent& event){
368 CutModel2MainPanel::getInstance()->ExecuteAll();
372 BEGIN_EVENT_TABLE(ToolBarEventHandlerCutModel2, wxEvtHandler)
373 EVT_MENU(10, ToolBarEventHandlerCutModel2::onAdd)
374 EVT_MENU(20, ToolBarEventHandlerCutModel2::onUndo)
375 EVT_MENU(30, ToolBarEventHandlerCutModel2::onRedo)
376 EVT_MENU(40, ToolBarEventHandlerCutModel2::onExecuteAll)