00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "wxMaracasParametersDialog.h"
00020 #include "wxMaracasImageBrowser.h"
00021 #include "wxMaracasHelpDialog.h"
00022 #include "wxMaracasFrame.h"
00023 #include "marDictionary.h"
00024
00025 #include <wx/panel.h>
00026 #include <wx/toolbar.h>
00027 #include <wx/dialog.h>
00028 #include <wx/colordlg.h>
00029
00030
00031
00032
00033
00034
00035 # include "res/bitmaps/connect.xpm"
00036 # include "res/bitmaps/params.xpm"
00037 # include "res/bitmaps/imagebrowser.xpm"
00038 # include "res/bitmaps/3D.xpm"
00039 # include "res/bitmaps/plans.xpm"
00040 # include "res/bitmaps/quant.xpm"
00041 # include "res/bitmaps/rotate.xpm"
00042 # include "res/bitmaps/bright.xpm"
00043 # include "res/bitmaps/pan.xpm"
00044 # include "res/bitmaps/zoom.xpm"
00045 # include "res/bitmaps/clear.xpm"
00046 # include "res/bitmaps/intensity.xpm"
00047 # include "res/bitmaps/help.xpm"
00048 # include "res/bitmaps/creatis_logo.xpm"
00049 # include "res/icons/maracas.xpm"
00050
00051
00052 BEGIN_EVENT_TABLE( wxMaracasFrame, wxFrame )
00053
00054 EVT_MENU( ID_TOOLBAR_PARAMETERS, wxMaracasFrame::OnParameters )
00055
00056 EVT_MENU( ID_TOOLBAR_3D_BROWSER, wxMaracasFrame::OnStartExperiment )
00057
00058 EVT_MENU( ID_TOOLBAR_PLANS, wxMaracasFrame::OnQuant )
00059
00060
00061 EVT_TOOL( 19999, wxMaracasFrame::OnRegenerateAll )
00062 EVT_TOOL( 19998, wxMaracasFrame::OnRegenerateSplineAxe )
00063 EVT_TOOL( 19997, wxMaracasFrame::OnCleanContours )
00064 EVT_TOOL( 19996, wxMaracasFrame::OnRegenerateSignal )
00065
00066
00067 EVT_CLOSE( wxMaracasFrame::OnQuit )
00068
00069 EVT_TOOL(wxSurfaceWidget::ID_BUTTON_NEW_AXIS, wxMaracasFrame::OnNewAxis )
00070 EVT_TOOL(wxSurfaceWidget::ID_BUTTON_DELETE_AXIS, wxMaracasFrame::OnDeleteAxis )
00071 END_EVENT_TABLE( );
00072
00073
00074 wxMaracasFrame::wxMaracasFrame( wxFrame *parent, wxWindowID id,
00075 marInterface *mar,marSimpleDicom *simpleDicom, char *dictionaryFileName,
00076 const wxString& title, const wxPoint& pos,
00077 const wxSize& size, long style)
00078 : wxFrame( parent, id, title, pos, size, style)
00079 {
00080 _mar = mar;
00081 _marSimpleDicom = simpleDicom;
00082 _wxmaracasquantification = NULL;
00083 _wxmaracas3dbrowser = NULL;
00084
00085 marDictionary marDict;
00086
00087 marDict.LoadDictionary_English();
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099 vtkObject *a = vtkObject::New();
00100 a->GlobalWarningDisplayOff();
00101 a->Delete();
00102
00103
00104 _actual_panel = NULL;
00105
00106
00107 this->CreateStatusBar( );
00108
00109 this->GetStatusBar()->SetFieldsCount( 2 );
00110 wxRect rect;
00111 this->GetStatusBar()->GetFieldRect(1, rect);
00112
00113
00114
00115
00116
00117 this->GetStatusBar()->Show();
00118 this->PositionStatusBar();
00119
00120
00121
00122 this->SetIcon( wxICON( maracas_icon ) );
00123
00124
00125 this->RecreateToolbar( );
00126
00127 }
00128
00129 void wxMaracasFrame::RecreateToolbar( )
00130 {
00131 wxToolBar* toolBar = this->GetToolBar( );
00132 delete toolBar;
00133 this->SetToolBar( NULL );
00134
00135 toolBar = this->CreateToolBar( TOOLBAR_STYLE, ID_TOOLBAR );
00136
00137
00138 wxBitmap toolBarBitmaps[ 22+1 ];
00139
00143 toolBarBitmaps[ 0 ] = wxBITMAP( toolbar_connect );
00144 toolBarBitmaps[ 4 ] = wxBITMAP( toolbar_params );
00145 toolBarBitmaps[ 7 ] = wxBITMAP( toolbar_imagebrowser );
00146 toolBarBitmaps[ 9 ] = wxBITMAP( toolbar_triD );
00147
00148 toolBarBitmaps[ 10 ] = wxBITMAP( toolbar_plans );
00149 toolBarBitmaps[ 11 ] = wxBITMAP( toolbar_quant );
00150 toolBarBitmaps[ 12 ] = wxBITMAP( toolbar_rotate );
00151 toolBarBitmaps[ 13 ] = wxBITMAP( toolbar_bright );
00152 toolBarBitmaps[ 14 ] = wxBITMAP( toolbar_pan );
00153 toolBarBitmaps[ 15 ] = wxBITMAP( toolbar_zoom );
00154 toolBarBitmaps[ 16 ] = wxBITMAP( toolbar_clear );
00155 toolBarBitmaps[ 17 ] = wxBITMAP( toolbar_intensity );
00156 toolBarBitmaps[ 20 ] = wxBITMAP( toolbar_help );
00157 toolBarBitmaps[ 22 ] = wxBITMAP( creatis_logo );
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171 toolBar->SetMargins( 4, 4 );
00172
00173 toolBar->SetToolBitmapSize( wxSize( toolBarBitmaps[ 4 ].GetWidth( ), toolBarBitmaps[ 4 ].GetHeight( ) ) );
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185 toolBar->AddTool( ID_TOOLBAR_3D_BROWSER, toolBarBitmaps[ 9 ], _T("Start 3D"), _T("Load 3D representation") );
00186 toolBar->AddSeparator( );
00187 toolBar->AddTool( ID_TOOLBAR_PLANS, toolBarBitmaps[ 10 ], _T("Plan"), _T("Planes") );
00188 toolBar->AddSeparator( );
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205 toolBar->AddTool( ID_TOOLBAR_PARAMETERS, toolBarBitmaps[ 4 ], _T("Parameters"), _T("Load parameters for modifying") );
00206
00207 toolBar->AddSeparator( );
00208
00209 wxBitmapButton *btnCreatisLogo = new wxBitmapButton(toolBar,-1,toolBarBitmaps[ 22 ] );
00210 btnCreatisLogo->SetSize(81+10,20+10);
00211 btnCreatisLogo->SetBackgroundColour(wxColour(0,0,153));
00212 Connect(btnCreatisLogo->GetId(), wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &wxMaracasFrame::OnAboutCreatis );
00213
00214 toolBar->AddControl(btnCreatisLogo);
00215
00216
00217
00218 toolBar->Realize( );
00219 toolBar->SetRows( 1 );
00220 toolBar->EnableTool(ID_TOOLBAR_3D_BROWSER, true);
00221 toolBar->EnableTool(ID_TOOLBAR_PLANS, false);
00222 toolBar->EnableTool(ID_TOOLBAR_QUANT, false);
00223 }
00224
00225
00226 void wxMaracasFrame::OnAboutCreatis( wxCommandEvent& event ){
00227 wxMaracasHelpDialog *dlg = new wxMaracasHelpDialog(this, -1, "Creatis", wxPoint(200,200), wxDefaultSize, wxDEFAULT_DIALOG_STYLE);
00228 dlg->ShowModal();
00229 dlg->Close();
00230 }
00231
00232
00233 void wxMaracasFrame::OnQuit( wxCloseEvent& event ){
00234
00235 DeletePanels();
00236 if (_mar!=NULL) { delete _mar; }
00237 _mar=NULL;
00238 marDictionary marDict;
00239 marDict.FreeDictionary();
00240
00241
00242
00243 this->Destroy();
00244 delete this;
00245 }
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264
00265
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275
00276 void wxMaracasFrame::OnParameters( wxCommandEvent& event )
00277 {
00278
00279
00280
00281
00282
00283
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295 wxMaracasParametersDialog *d = new wxMaracasParametersDialog( this, _mar );
00296 d->ShowModal( );
00297 d->Close(true);
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307
00308 }
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318
00319
00320
00321
00322
00323
00324
00325
00326
00327
00328
00329
00330
00331
00332
00333
00334
00335
00336
00337
00338
00339
00340
00341
00342
00343
00344
00345
00346
00347
00348
00349
00350 void wxMaracasFrame::OnStartExperiment( wxCommandEvent& event )
00351 {
00352
00353 wxBusyCursor wait;
00354
00355 int voi[ 6 ];
00356
00357
00358
00359
00360 _marSimpleDicom->loadActualSerie( this->_progressGauge );
00361 _mar->_dicom->SetVolume( _marSimpleDicom->getVolume() );
00362
00363
00364 voi[0] = 0;
00365 voi[1] = (_mar->_dicom->getVolume( )->getXdim( ))-1;
00366 voi[2] = 0;
00367 voi[3] = (_mar->_dicom->getVolume( )->getYdim( ))-1;
00368 voi[4] = 0;
00369 voi[5] = (_mar->_dicom->getVolume( )->getZdim( ))-1;
00370
00371
00372 _mar->_experiment->setVOI( voi );
00373 _mar->initExperiment( );
00374
00375
00376 DeletePanels();
00377 _wxmaracas3dbrowser = new wxMaracas3DBrowser( this, _mar, -1 ,ID_TOOLBAR_PLANS);
00378
00379
00380 _actual_panel = _wxmaracas3dbrowser;
00381
00382 wxSizeEvent myevent(wxSize(-1, -1), this->GetId());
00383 this->OnSize(myevent);
00384
00385
00386
00387 _wxmaracas3dbrowser->LoadData( );
00388
00389
00390
00391
00392
00393 this->GetToolBar()->EnableTool(ID_TOOLBAR_PLANS, false);
00394 this->GetToolBar()->EnableTool(ID_TOOLBAR_3D_BROWSER, false);
00395 this->GetToolBar()->EnableTool(ID_TOOLBAR_QUANT, false);
00396
00397 }
00398
00399
00400
00401
00402
00403
00404
00405
00406
00407 void wxMaracasFrame::DeletePanels ( ){
00408 if (_wxmaracasquantification!=NULL){
00409 delete _wxmaracasquantification;
00410 _wxmaracasquantification=NULL;
00411 }
00412 if (_wxmaracas3dbrowser!=NULL){
00413 delete _wxmaracas3dbrowser;
00414 _wxmaracas3dbrowser=NULL;
00415 }
00416 }
00417
00418 void wxMaracasFrame::OnQuant (wxCommandEvent& event ){
00419 int isovalue = 50;
00420 int opacity = 50;
00421
00422 if (_wxmaracas3dbrowser!=NULL){
00423 isovalue = _wxmaracas3dbrowser->GetIsovalue();
00424 opacity = _wxmaracas3dbrowser->GetOpacity();
00425 }
00426
00427 DeletePanels();
00428 _wxmaracasquantification = new wxMaracasQuantification( this, _mar, -1 );
00429 _actual_panel = _wxmaracasquantification;
00430
00431 wxSizeEvent myevent(wxSize(-1, -1), this->GetId());
00432 this->OnSize(myevent);
00433 this->Show(true);
00434
00435
00436 _wxmaracasquantification->LoadData( );
00437 _wxmaracasquantification->SetSlider_Isovalue_Opacity(isovalue,opacity);
00438 this->GetToolBar()->EnableTool(ID_TOOLBAR_PLANS, false);
00439 this->GetToolBar()->EnableTool(ID_TOOLBAR_3D_BROWSER, true);
00440 }
00441
00442 void wxMaracasFrame::OnNewAxis(wxCommandEvent &WXUNUSED(event))
00443 {
00444 this->GetToolBar()->EnableTool(ID_TOOLBAR_PLANS, true);
00445 this->GetToolBar()->EnableTool(ID_TOOLBAR_3D_BROWSER, false);
00446 this->GetToolBar()->EnableTool(ID_TOOLBAR_QUANT, true);
00447 }
00448
00449 void wxMaracasFrame::OnDeleteAxis(wxCommandEvent &WXUNUSED(event))
00450 {
00451 this->GetToolBar()->EnableTool(ID_TOOLBAR_PLANS, false);
00452 this->GetToolBar()->EnableTool(ID_TOOLBAR_3D_BROWSER, false);
00453 this->GetToolBar()->EnableTool(ID_TOOLBAR_QUANT, false);
00454 }
00455
00456 void wxMaracasFrame::OnRegenerateAll( wxCommandEvent& event ){
00457 if (_wxmaracas3dbrowser!=NULL) { _wxmaracas3dbrowser->RegenerateAll(true); }
00458 if (_wxmaracasquantification!=NULL) { _wxmaracasquantification->RegenerateAll(true);}
00459 }
00460
00461 void wxMaracasFrame::OnRegenerateSplineAxe( wxCommandEvent& event ){
00462 if (_wxmaracas3dbrowser!=NULL) { _wxmaracas3dbrowser->RegenerateAll(false); }
00463 if (_wxmaracasquantification!=NULL) { _wxmaracasquantification->RegenerateAll(false); }
00464 }
00465
00466 void wxMaracasFrame::OnCleanContours( wxCommandEvent& event ){
00467 if (_wxmaracasquantification!=NULL) { _wxmaracasquantification->CleanContours(); }
00468 }
00469
00470 void wxMaracasFrame::OnRegenerateSignal( wxCommandEvent& event ){
00471 if (_wxmaracasquantification!=NULL) { _wxmaracasquantification->RegenerateSignal(); }
00472 }
00473
00474
00475
00476