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