]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracaSurfaceRenderingProp3D.cxx
*** empty log message ***
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxMaracaSurfaceRenderingProp3D.cxx
1 #include "wxMaracasSurfaceRenderingProp3D.h"
2
3 #include <wx/colordlg.h>
4 #include "wxMaracasSurfaceRendering.h"
5 #include "wxMaracasRendererView.h"
6 #include <OpenImage.xpm>
7 #include <Add.xpm>
8 #include "Color.xpm"
9
10 /**
11 **      Implementation of SurfaceRenderingProp3D
12 **/
13
14 wxMaracasSurfaceRenderingProp3D::wxMaracasSurfaceRenderingProp3D(wxWindow* parent, int propid, bool _isComplexBox, int _panID)
15 :wxMaracasSurfaceRenderingPanel(parent, propid, _isComplexBox, _panID){
16         createControls();       
17 }
18
19 wxMaracasSurfaceRenderingProp3D::~wxMaracasSurfaceRenderingProp3D(){    
20         //wxMaracasSurfaceRendering::getInstance()->addRemoveActor(_propid, false);
21         if(this->isComplex())
22         {       
23                 //if(this->getPanId() == 1)
24                 //      ((wxMaracasRenderTabbedPanel*)(wxMaracasRendererView::getInstance())->getTabbedPanel())->addRemoveActorSA(_propid, false);
25                 //if(this->getPanId() == 2)
26                 //      ((wxMaracasRenderTabbedPanel*)(wxMaracasRendererView::getInstance())->getTabbedPanel())->addRemoveActorSB(_propid, false);
27                 //if(this->getPanId() == 3)
28                 //      ((wxMaracasRenderTabbedPanel*)(wxMaracasRendererView::getInstance())->getTabbedPanel())->addRemoveActorSC(_propid, false);
29         }
30         //else
31                 //wxMaracasSurfaceRendering::getInstance()->deleteActor(_propid);
32 }
33
34 void wxMaracasSurfaceRenderingProp3D::createControls(){
35
36         wxFlexGridSizer* sizersurfprop = new wxFlexGridSizer(1);
37         
38         if(!isComplexBox) 
39         {
40                 wxString choices[2];
41                 choices[0] = wxString(_T("On"));
42                 choices[1] = wxString(_T("Off"));
43                 checkbox = new  wxCheckBox(this,-1,wxString(_T("Show Actor")));
44                 Connect(checkbox->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasSurfaceRenderingProp3D::onCheckBoxChange);  
45                 checkbox->SetValue(true);       
46
47                 sizersurfprop->Add(checkbox,wxFIXED_MINSIZE);
48         }
49
50         //this->addControl(checkbox);   
51         wxFlexGridSizer* sizerbut = new wxFlexGridSizer(3);
52
53         wxBitmap bitmap(Color_xpm);
54         _colorchoose = new wxBitmapButton(this, -1, bitmap,wxDefaultPosition,wxSize(30,30));    
55         Connect(_colorchoose->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasSurfaceRenderingProp3D::onColorChange);                   
56         sizerbut->Add(_colorchoose,wxFIXED_MINSIZE);
57
58         wxBitmap bitmap1(Add_xpm);
59         _viewimage = new wxBitmapButton(this, -1, bitmap1, wxDefaultPosition, wxSize(30,30));   
60         Connect(_viewimage->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasSurfaceRenderingProp3D::onViewImage);                       
61         sizerbut->Add(_viewimage,wxFIXED_MINSIZE);
62
63         if(isComplexBox) 
64         {
65                 wxBitmap bitmap2(OpenImage_xpm);
66                 wxBitmapButton* _openParameters = new wxBitmapButton(this, -1, bitmap2, wxDefaultPosition, wxSize(30,30));      
67                 Connect(_openParameters->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasSurfaceRenderingProp3D::onOpenParameters);                     
68                 sizerbut->Add(_openParameters,wxFIXED_MINSIZE); 
69         }
70         sizersurfprop->Add(sizerbut,wxFIXED_MINSIZE);
71         //sizercolor->Add(checkbox,wxFIXED_MINSIZE);
72         //sizercolor->Add(_colorchoose,wxFIXED_MINSIZE);
73         //this->addControl(sizercolor);
74
75         wxStaticText* label = new wxStaticText(this, -1, wxString(_T("Opacity")));              
76         opacity = new wxSlider(this, -1,100,0,100,wxDefaultPosition,wxDefaultSize,wxSL_HORIZONTAL|wxSL_LABELS); 
77         Connect(opacity->GetId(), wxEVT_SCROLL_CHANGED, (wxObjectEventFunction)&wxMaracasSurfaceRenderingProp3D::onOpacityRelease);     
78         wxFlexGridSizer* sizeropacity = new wxFlexGridSizer(1,1,1);     
79         sizeropacity->Add(label,wxFIXED_MINSIZE);
80         sizeropacity->Add(opacity,wxFIXED_MINSIZE);
81
82         sizersurfprop->Add(sizeropacity,wxFIXED_MINSIZE);
83
84         this->addControl(sizersurfprop);
85 }
86 void wxMaracasSurfaceRenderingProp3D::onCheckBoxChange(wxCommandEvent& event){  
87         wxMaracasSurfaceRendering::getInstance()->addRemoveActor(this->getPropId(), checkbox->GetValue());
88 }
89 void wxMaracasSurfaceRenderingProp3D::onColorChange(wxCommandEvent& event){
90         wxColourDialog* colourdiag = new wxColourDialog(this);
91         if(colourdiag->ShowModal()==wxID_OK){
92                 wxColour colour = colourdiag->GetColourData().GetColour();
93                 _colorchoose->SetBackgroundColour(colour);
94
95                 double r = (double)(colour.Red())/255.0;
96                 double g = (double)(colour.Green())/255.0;
97                 double b = (double)(colour.Blue())/255.0;
98                 
99                 if(this->isComplex()){
100                         if(this->getPanId() == 1)
101                                 ((wxMaracasRenderTabbedPanel*)(wxMaracasRendererView::getInstance())->getTabbedPanel())->changeColorA(this->getPropId(), r, g, b);
102                         if(this->getPanId() == 2)
103                                 ((wxMaracasRenderTabbedPanel*)(wxMaracasRendererView::getInstance())->getTabbedPanel())->changeColorB(this->getPropId(), r, g, b);
104                         if(this->getPanId() == 3)
105                                 ((wxMaracasRenderTabbedPanel*)(wxMaracasRendererView::getInstance())->getTabbedPanel())->changeColorC(this->getPropId(), r, g, b);
106                 }
107                 else
108                         wxMaracasSurfaceRendering::getInstance()->changeColor(this->getPropId(),r,g,b);
109         }
110         delete colourdiag;
111 }
112 /*void wxMaracasSurfaceRenderingProp3D::onActionButtonPressedEliminate( wxCommandEvent& event ){        
113
114 }*/
115
116 void wxMaracasSurfaceRenderingProp3D::onOpacityRelease(wxScrollEvent& event ){
117         if(this->isComplex()){
118                 if(this->getPanId() == 1)
119                         ((wxMaracasRenderTabbedPanel*)(wxMaracasRendererView::getInstance())->getTabbedPanel())->changeOpacityA(this->getPropId(),opacity->GetValue());
120                 if(this->getPanId() == 2)
121                         ((wxMaracasRenderTabbedPanel*)(wxMaracasRendererView::getInstance())->getTabbedPanel())->changeOpacityB(this->getPropId(),opacity->GetValue());
122                 if(this->getPanId() == 3)
123                         ((wxMaracasRenderTabbedPanel*)(wxMaracasRendererView::getInstance())->getTabbedPanel())->changeOpacityC(this->getPropId(),opacity->GetValue());
124         }
125         else
126                 wxMaracasSurfaceRendering::getInstance()->changeOpacity(this->getPropId(),opacity->GetValue());
127 }
128
129 void wxMaracasSurfaceRenderingProp3D::onViewImage(wxCommandEvent& event){       
130
131         //if(mwxwidget->ShowModal()==wxID_OK){
132     
133         //      mwxwidget->Show(false);
134         //}     
135 }
136
137 /** 
138 ** Loads the volume in a separate window
139 ** Carolina Perez: Method recently added 28/10/2009
140 **/
141 void wxMaracasSurfaceRenderingProp3D::onOpenParameters(wxCommandEvent& event){
142         dialog = new wxMaracasRenderImageManagementPanel(this);
143         dialog->SetSize(400,580);
144         dialog->Show(); 
145 }