]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasRenderTabbedPanel.cpp
*** empty log message ***
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxMaracasRenderTabbedPanel.cpp
index 457a2abb59060160e61282d0c5a8a745108bd583..3daafe07a8f322eb3bb8654bb83c600662b4ce10 100644 (file)
@@ -1,4 +1,5 @@
 #include "wxMaracasRenderTabbedPanel.h"
+#include "HistogramDialogComboBox.h"
 
 #include <wx/colordlg.h>
 #include <OpenImage.xpm>
@@ -8,35 +9,34 @@
 /**
 **     
 **/
-wxMaracasRenderTabbedPanel::wxMaracasRenderTabbedPanel(wxWindow* parent, wxMaracasMultipleVolumeRendererManager* _volmanager, wxMaracasSurfaceRenderingManager* _surrendmanager1, wxMaracasSurfaceRenderingManager* _surrendmanager2, 
-                                                                         wxMaracasSurfaceRenderingManager* _surrendmanager3, wxString filename, wxString dataname)
+wxMaracasRenderTabbedPanel::wxMaracasRenderTabbedPanel(wxWindow* parent/*, wxMaracasMultipleVolumeRendererManager* _volmanager, wxMaracasSurfaceRenderingManager* _surrendmanager1, wxMaracasSurfaceRenderingManager* _surrendmanager2, 
+                                                                         wxMaracasSurfaceRenderingManager* _surrendmanager3, wxString pathfile, wxString filename*/)
 : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize)
 {
        //_propid = propid;
-       volmanager = _volmanager;
-       surrendmanager1 = _surrendmanager1;
-       surrendmanager2 = _surrendmanager2;
-       surrendmanager3 = _surrendmanager3;
+       volmanager = new wxMaracasMultipleVolumeRendererManager();
+       surrendmanager1 = new wxMaracasSurfaceRenderingManager();
+       surrendmanager2 = new wxMaracasSurfaceRenderingManager();
+       surrendmanager3 = new wxMaracasSurfaceRenderingManager();
 
-       createControls(filename, dataname);
 }
 
 /**
 **
 **/
-void wxMaracasRenderTabbedPanel::createControls(wxString filename, wxString dataname)
+void wxMaracasRenderTabbedPanel::createControls(wxString pathfile, wxString filename)
 {
        //wxPanel* up = new wxPanel(this, wxID_ANY);
-       wxFlexGridSizer* sizerrenderprop = new wxFlexGridSizer(2,3,1);
+       wxFlexGridSizer* sizerrenderprop = new wxFlexGridSizer(1);
        
-       wxString choices[2];
-       choices[0] = wxString(_T("On"));
-       choices[1] = wxString(_T("Off"));
+       //wxString choices[2];
+       //choices[0] = wxString(_T("On"));
+       //choices[1] = wxString(_T("Off"));
+       wxFlexGridSizer* sizercheck = new wxFlexGridSizer(2);
        checkboxVol = new  wxCheckBox(this,-1,wxString(_T("Volume Rendering")));
        Connect(checkboxVol->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onCheckBoxVChange);   
        checkboxVol->SetValue(true);    
-
-       sizerrenderprop->Add(checkboxVol, wxFIXED_MINSIZE);
+       sizercheck->Add(checkboxVol, wxFIXED_MINSIZE);
 
        //wxString choices[2];
        //choices[0] = wxString(_T("On"));
@@ -45,7 +45,7 @@ void wxMaracasRenderTabbedPanel::createControls(wxString filename, wxString data
        Connect(checkboxSA->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onCheckBoxSAChange);   
        checkboxSA->SetValue(true);     
 
-       sizerrenderprop->Add(checkboxSA, wxFIXED_MINSIZE);
+       sizercheck->Add(checkboxSA, wxFIXED_MINSIZE);
 
        //wxString choices[2];
        //choices[0] = wxString(_T("On"));
@@ -54,7 +54,7 @@ void wxMaracasRenderTabbedPanel::createControls(wxString filename, wxString data
        Connect(checkboxSB->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onCheckBoxSBChange);   
        checkboxSB->SetValue(true);     
 
-       sizerrenderprop->Add(checkboxSB, wxFIXED_MINSIZE);
+       sizercheck->Add(checkboxSB, wxFIXED_MINSIZE);
 
        //wxString choices[2];
        //choices[0] = wxString(_T("On"));
@@ -63,36 +63,32 @@ void wxMaracasRenderTabbedPanel::createControls(wxString filename, wxString data
        Connect(checkboxSC->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onCheckBoxSCChange);   
        checkboxSC->SetValue(true);     
 
-       sizerrenderprop->Add(checkboxSC, wxFIXED_MINSIZE);
-
+       sizercheck->Add(checkboxSC, wxFIXED_MINSIZE);
+       sizerrenderprop->Add(sizercheck, wxFIXED_MINSIZE);
        //up->SetSizer(sizerup, true);          
        //up->SetAutoLayout( true );
 
        wxtabs = new wxNotebook(this, -1);
 
-       std::string s = std::string(filename.mb_str());
+       std::string s = std::string(pathfile.mb_str());
        vtkImageData* img1 = volmanager->getImageData(s);
        vtkImageData* img2 = surrendmanager1->getImageData(s);
        vtkImageData* img3 = surrendmanager2->getImageData(s);
        vtkImageData* img4 = surrendmanager3->getImageData(s);
        if(img1!=NULL)
        {
-               s = std::string(dataname.mb_str());
-               wxMaracasMultipleVolumeRendererPanel* controlpan1 = addVolume(img1, s);
-               wxMaracasSurfaceRenderingPanel* controlpan2 = addSurface1(img2, s);
-               wxMaracasSurfaceRenderingPanel* controlpan3 = addSurface2(img3, s);
-               wxMaracasSurfaceRenderingPanel* controlpan4 = addSurface3(img4, s);
-       
-               wxtabs->AddPage(controlpan1, _T("Volume Rendering"), true);
-               wxtabs->AddPage(controlpan2, _T("Surf Rend A"));
-               wxtabs->AddPage(controlpan3, _T("Surf Rend B"));
-               wxtabs->AddPage(controlpan4, _T("Surf Rend C"));
-       
+
+               s = std::string(filename.mb_str());
+               addVolume(img1, s);
+               addSurface1(img2, s);
+               addSurface2(img3, s);
+               addSurface3(img4, s);   
                wxtabs->Refresh();
        }
 
        //wxFlexGridSizer* sizerrenderprop = new wxFlexGridSizer(2,1,5);
        //sizerrenderprop->Add(up, wxFIXED_MINSIZE);
+       
        sizerrenderprop->Add(wxtabs, wxFIXED_MINSIZE);
 
        this->SetSizer(sizerrenderprop, true);          
@@ -102,29 +98,35 @@ void wxMaracasRenderTabbedPanel::createControls(wxString filename, wxString data
 
 wxMaracasRenderTabbedPanel::~wxMaracasRenderTabbedPanel()
 {      
-       //wxMaracasIRMView::getInstance()->addRemoveActor(_propid, false);
+       //wxMaracasRenderTabbedPanel::getInstance()->addRemoveActorV(_propid, false);
+       //wxMaracasRenderTabbedPanel::getInstance()->addRemoveActorSA(_propid, false);
+       //wxMaracasRenderTabbedPanel::getInstance()->addRemoveActorSB(_propid, false);
+       //wxMaracasRenderTabbedPanel::getInstance()->addRemoveActorSC(_propid, false);
        //wxMaracasRenderTabbedPanel::getInstance()->deleteVolume(_propid);
-       delete wxtabs;
-       //delete surview1;
-       //delete surview2;
-       //delete surview3;
+       delete wxtabs;  
+}
+
+void wxMaracasRenderTabbedPanel::setRenderer(vtkRenderer* renderer)
+{
+       volmanager->setRenderer(renderer);
+       surrendmanager1->setRenderer(renderer);
+       surrendmanager2->setRenderer(renderer);
+       surrendmanager3->setRenderer(renderer);
 }
 
 /*
 *
 */
-wxMaracasMultipleVolumeRendererPanel* wxMaracasRenderTabbedPanel::addVolume(vtkImageData* img, std::string dataname)
+void wxMaracasRenderTabbedPanel::addVolume(vtkImageData* img, std::string dataname)
 {
-
        try
        {
-               int id = volmanager->addVolume(img, dataname);
-               if(id!=-1)
+               int _propidV = volmanager->addVolume(img, dataname);
+               if(_propidV!=-1)
                {
-                       wxMaracasMultipleVolumeRendererPanel* controlpan = new wxMaracasMultipleVolumeRendererPanel(wxtabs, id,img);
-                       //controlpan->updateVolume();
-
-                       return controlpan;
+                       controlpanV = new wxMaracasMultipleVolumeRendererPanel(wxtabs, _propidV, img, true);
+                       wxtabs->AddPage(controlpanV, _T("Volume Rendering"), true);
+                       updateVolume();
                }
        }
        catch(char* str)
@@ -135,19 +137,18 @@ wxMaracasMultipleVolumeRendererPanel* wxMaracasRenderTabbedPanel::addVolume(vtkI
        }
 }
 
-wxMaracasSurfaceRenderingPanel* wxMaracasRenderTabbedPanel::addSurface1(vtkImageData* img, std::string dataname)
+void wxMaracasRenderTabbedPanel::addSurface1(vtkImageData* img, std::string dataname)
 {
        try
        {
-               int id = surrendmanager1->addPropMHD(img, dataname);
+               int _propidSA = surrendmanager1->addPropMHD(img, dataname);
                
-               if(id!=-1)
+               if(_propidSA!=-1)
                {
-                       wxMaracasSurfaceRenderingPanel* controlpan = new wxMaracasSurfaceRenderingProp3DMHD(wxtabs, id);
-                       //int maxiso = surrendmanager1->getMaxIsoValue(id);
-                       //((wxMaracasSurfaceRenderingProp3DMHD*)controlpan)->createControls(maxiso);
-                       
-                       return controlpan;
+                       controlpanSA = new wxMaracasSurfaceRenderingProp3DMHD(wxtabs, _propidSA, true, 1);
+                       int maxiso = surrendmanager1->getMaxIsoValue(_propidSA);
+                       ((wxMaracasSurfaceRenderingProp3DMHD*)controlpanSA)->createControls(maxiso);
+                       wxtabs->AddPage(controlpanSA, _T("Surf Rendering A"));
                }
        }
        catch(char* str)
@@ -158,18 +159,18 @@ wxMaracasSurfaceRenderingPanel* wxMaracasRenderTabbedPanel::addSurface1(vtkImage
        }
 }
 
-wxMaracasSurfaceRenderingPanel* wxMaracasRenderTabbedPanel::addSurface2(vtkImageData* img, std::string dataname)
+void wxMaracasRenderTabbedPanel::addSurface2(vtkImageData* img, std::string dataname)
 {
        try
        {
-               int id = surrendmanager2->addPropMHD(img, dataname);
-               if(id!=-1)
+               int _propidSB = surrendmanager2->addPropMHD(img, dataname);
+               if(_propidSB!=-1)
                {
-                       wxMaracasSurfaceRenderingPanel* controlpan = new wxMaracasSurfaceRenderingProp3DMHD(wxtabs, id);
-                       //int maxiso = surrendmanager2->getMaxIsoValue(id);
-                       //((wxMaracasSurfaceRenderingProp3DMHD*)controlpan)->createControls(maxiso);
+                       controlpanSB = new wxMaracasSurfaceRenderingProp3DMHD(wxtabs, _propidSB, true, 2);
+                       int maxiso = surrendmanager2->getMaxIsoValue(_propidSB);
+                       ((wxMaracasSurfaceRenderingProp3DMHD*)controlpanSB)->createControls(maxiso);
+                       wxtabs->AddPage(controlpanSB, _T("Surf Rendering B"));
 
-                       return controlpan;
                }
        }
        catch(char* str)
@@ -180,18 +181,18 @@ wxMaracasSurfaceRenderingPanel* wxMaracasRenderTabbedPanel::addSurface2(vtkImage
        }
 }
 
-wxMaracasSurfaceRenderingPanel* wxMaracasRenderTabbedPanel::addSurface3(vtkImageData* img, std::string dataname)
+void wxMaracasRenderTabbedPanel::addSurface3(vtkImageData* img, std::string dataname)
 {
        try
        {
-               int id = surrendmanager3->addPropMHD(img, dataname);
-               if(id!=-1)
+               _propidSC = surrendmanager3->addPropMHD(img, dataname);
+
+               if(_propidSC!=-1)
                {
-                       wxMaracasSurfaceRenderingPanel* controlpan = new wxMaracasSurfaceRenderingProp3DMHD(wxtabs, id);
-                       //int maxiso = surrendmanager3->getMaxIsoValue(id);
-                       //((wxMaracasSurfaceRenderingProp3DMHD*)controlpan)->createControls(maxiso);
-                       
-                       return controlpan;
+                       controlpanSC = new wxMaracasSurfaceRenderingProp3DMHD(wxtabs, _propidSC, true, 3);
+                       int maxiso = surrendmanager3->getMaxIsoValue(_propidSC);
+                       ((wxMaracasSurfaceRenderingProp3DMHD*)controlpanSC)->createControls(maxiso);
+                       wxtabs->AddPage(controlpanSC, _T("Surf Rendering C"));
                }
        }
        catch(char* str)
@@ -202,43 +203,224 @@ wxMaracasSurfaceRenderingPanel* wxMaracasRenderTabbedPanel::addSurface3(vtkImage
        }
 }
 
-void wxMaracasRenderTabbedPanel::onOK(wxCommandEvent& event)
+/**
+** Deletes complete volume
+**/
+void wxMaracasRenderTabbedPanel::deleteVolume(int volid)
+{
+       volmanager->deleteActor(volid);
+       surrendmanager1->deleteActor(volid);
+       surrendmanager2->deleteActor(volid);
+       surrendmanager3->deleteActor(volid);
+}
+
+/**
+** Adds or removes volume rendering actor with given ID
+**/
+void wxMaracasRenderTabbedPanel::addRemoveActorV(int id, bool addremove)
+{
+       volmanager->addRemoveActor(id, addremove);
+}
+
+/**
+** Adds or removes surface rendering actor with given ID
+**/
+void wxMaracasRenderTabbedPanel::addRemoveActorSA(int id, bool addremove)
+{
+       surrendmanager1->addRemoveActor(id, addremove);
+}
+
+/**
+** Adds or removes surface rendering actor with given ID
+**/
+void wxMaracasRenderTabbedPanel::addRemoveActorSB(int id, bool addremove)
+{
+       surrendmanager2->addRemoveActor(id, addremove);
+}
+
+/**
+** Adds or removes surface rendering actor with given ID
+**/
+void wxMaracasRenderTabbedPanel::addRemoveActorSC(int id, bool addremove)
+{      
+       surrendmanager3->addRemoveActor(id, addremove);
+}      
+
+/**
+** Sets color points values for the given volume rendering identified by parameter: volumeid
+**/
+void wxMaracasRenderTabbedPanel::SetValuesColorPointsFunction(int volid, std::vector<double> greylevelcolors,std::vector<double> red,std::vector<double> green,std::vector<double> blue)
+{
+       volmanager->setVolumeColor(volid, greylevelcolors, red, green, blue);
+}
+
+/**
+** Sets points values for the given volume rendering identified by parameter: volumeid
+**/
+void wxMaracasRenderTabbedPanel::SetValuesPointsFunction(int volid, std::vector<double> greylevel, std::vector<double> values)
+{
+       volmanager->setVolumeOpacity(volid, greylevel, values);
+}
+
+/**
+** Returns transfer function for the given volume rendering identified by parameter: volumeid
+**/
+vtkPiecewiseFunction* wxMaracasRenderTabbedPanel::GetTransferFunction(int volumeid)
+{
+       return volmanager->GetTransferFunction(volumeid);
+}
+
+/**
+** Returns color function for the given volume rendering identified by parameter: volumeid
+**/
+vtkColorTransferFunction* wxMaracasRenderTabbedPanel::GetColorFunction(int volumeid)
+{
+    return volmanager->GetColorFunction(volumeid);
+}
+
+/**
+** Changes color function by the given value for the given volume rendering identified by parameter: volumeid
+**/
+void wxMaracasRenderTabbedPanel::changeOpacityA(int _propid, int value)
 {
-    updateVolume();
-       //_frame->Show(false);
+       surrendmanager1->changeOpacity(_propid,value);
 }
 
-void wxMaracasRenderTabbedPanel::onCancel(wxCommandEvent& event)
+/**
+** Changes isoValue by the given value for the given surface rendering image identified by parameter: propid
+**/
+void wxMaracasRenderTabbedPanel::changeIsoValueA(int propid, double value)
 {
-       //_frame->Show(false);
+       surrendmanager1->changeIsoValue(propid, value);
 }
 
+/**
+** Changes color for the given surface rendering image identified by parameter: propid
+**/
+void wxMaracasRenderTabbedPanel::changeColorA(int propid, double red, double green, double blue)
+{
+       try
+       {
+               surrendmanager1->changeColor(propid, red, green, blue);
+       }
+       catch(char* str)
+       {
+               wxString s( str,wxConvUTF8 );
+               wxMessageDialog* diag = new wxMessageDialog(this, s, s, wxICON_ERROR);
+               diag->ShowModal();
+               delete diag;
+       }
+}
+
+/**
+** Changes color function by the given value for the given volume rendering identified by parameter: volumeid
+**/
+void wxMaracasRenderTabbedPanel::changeOpacityB(int _propid, int value)
+{
+       surrendmanager2->changeOpacity(_propid,value);
+}
+
+/**
+** Changes isoValue by the given value for the given surface rendering image identified by parameter: propid
+**/
+void wxMaracasRenderTabbedPanel::changeIsoValueB(int propid, double value)
+{
+       surrendmanager2->changeIsoValue(propid, value);
+}
+
+/**
+** Changes color for the given surface rendering image identified by parameter: propid
+**/
+void wxMaracasRenderTabbedPanel::changeColorB(int propid, double red, double green, double blue)
+{
+       try
+       {
+               surrendmanager2->changeColor(propid, red, green, blue);
+       }
+       catch(char* str)
+       {
+               wxString s( str,wxConvUTF8 );
+               wxMessageDialog* diag = new wxMessageDialog(this, s, s, wxICON_ERROR);
+               diag->ShowModal();
+               delete diag;
+       }
+}
+
+/**
+** Changes color function by the given value for the given volume rendering identified by parameter: volumeid
+**/
+void wxMaracasRenderTabbedPanel::changeOpacityC(int _propid, int value)
+{
+       surrendmanager3->changeOpacity(_propid,value);
+}
+
+/**
+** Changes isoValue by the given value for the given surface rendering image identified by parameter: propid
+**/
+void wxMaracasRenderTabbedPanel::changeIsoValueC(int propid, double value)
+{
+       surrendmanager3->changeIsoValue(propid, value);
+}
+
+/**
+** Changes color for the given surface rendering image identified by parameter: propid
+**/
+void wxMaracasRenderTabbedPanel::changeColorC(int propid, double red, double green, double blue)
+{
+       try
+       {
+               surrendmanager3->changeColor(propid, red, green, blue);
+       }
+       catch(char* str)
+       {
+               wxString s( str,wxConvUTF8 );
+               wxMessageDialog* diag = new wxMessageDialog(this, s, s, wxICON_ERROR);
+               diag->ShowModal();
+               delete diag;
+       }
+}
+
+/**
+** 
+**/
 void wxMaracasRenderTabbedPanel::onUpdate(wxCommandEvent& event)
 {
        updateVolume();    
 }
 
+/**
+** 
+**/
 void wxMaracasRenderTabbedPanel::updateVolume()
 {
-       //std::vector<double> greylevelcolors;
-       //std::vector<double> red;
-       //std::vector<double> green;
-       //std::vector<double> blue;
+       /*Temporarily disabled*/
+
+       std::vector<double> greylevelcolors;
+       std::vector<double> red;
+       std::vector<double> green;
+       std::vector<double> blue;
 
-       //std::vector<double> greylevel;
-       //std::vector<double> values;
+       std::vector<double> greylevel;
+       std::vector<double> values;
 
-    //mwxwidget->GetValuesColorPointsFunction(greylevelcolors, red, green, blue);
-       //mwxwidget->GetValuesPointsFunction(greylevel, values);
+    HistogramDialogComboBox* histo = controlpanV->getMwxwidget();
+       histo->GetValuesColorPointsFunction(greylevelcolors, red, green, blue);
+       histo->GetValuesPointsFunction(greylevel, values);
 
 
+       volmanager->setVolumeColor(controlpanV->getPropId(), greylevelcolors, red, green, blue);
+       volmanager->setVolumeOpacity(controlpanV->getPropId(), greylevel, values);
        //wxMaracasMultipleVolumeRendererView::getInstance()->SetValuesColorPointsFunction(this->_propid, greylevelcolors, red, green, blue);
        //wxMaracasMultipleVolumeRendererView::getInstance()->SetValuesPointsFunction(this->_propid, greylevel, values);
 
 }
 
+/**
+**
+**/
 void wxMaracasRenderTabbedPanel::onColorChange(wxCommandEvent& event)
 {      
+       /*Temporarily disabled*/
 
        //if(mwxwidget->ShowModal()==wxID_OK){
         //updateVolume();
@@ -249,46 +431,71 @@ void wxMaracasRenderTabbedPanel::onColorChange(wxCommandEvent& event)
 /**
 ** 
 **/
-void wxMaracasRenderTabbedPanel::onViewImage(wxCommandEvent& event){
+void wxMaracasRenderTabbedPanel::onViewImage(wxCommandEvent& event)
+{
        
 }
 
 /**
-**
+** Method called when VolumeRendering checkbox status changes: Either shows or hides VolumeRendering image
 **/
 void wxMaracasRenderTabbedPanel::onCheckBoxVChange(wxCommandEvent& event)
 {
-       //wxMaracasMultipleVolumeRendererView::getInstance()->addRemoveActor(this->getPropId(), checkbox->GetValue());  
+       volmanager->addRemoveActor(this->getPropIdV(), checkboxVol->GetValue());        
 }
 
 /**
-**
+** Method called when SurfaceRendering A checkbox status changes: Either shows or hides SurfaceRendering image
 **/
 void wxMaracasRenderTabbedPanel::onCheckBoxSAChange(wxCommandEvent& event)
 {      
-       //wxMaracasMultipleVolumeRendererView::getInstance()->addRemoveActor(this->getPropId(), checkbox->GetValue());  
+       surrendmanager1->addRemoveActor(this->getPropIdSA(), checkboxSA->GetValue());   
 }
 
 /**
-**
+** Method called when SurfaceRendering B checkbox status changes: Either shows or hides SurfaceRendering B image
 **/
 void wxMaracasRenderTabbedPanel::onCheckBoxSBChange(wxCommandEvent& event)
 {      
-       //wxMaracasMultipleVolumeRendererView::getInstance()->addRemoveActor(this->getPropId(), checkbox->GetValue());  
+       surrendmanager2->addRemoveActor(this->getPropIdSB(), checkboxSB->GetValue());   
 }
 
 /**
-**
+** Method called when SurfaceRendering C checkbox status changes: Either shows or hides SurfaceRendering C image
 **/
 void wxMaracasRenderTabbedPanel::onCheckBoxSCChange(wxCommandEvent& event)
 {      
-       //wxMaracasMultipleVolumeRendererView::getInstance()->addRemoveActor(this->getPropId(), checkbox->GetValue());  
+       surrendmanager3->addRemoveActor(this->getPropIdSC(), checkboxSC->GetValue());   
+}
+
+/**
+**
+**/
+int wxMaracasRenderTabbedPanel::getPropIdV()
+{
+       return _propidV;
+}
+
+/**
+**
+**/
+int wxMaracasRenderTabbedPanel::getPropIdSA()
+{
+       return _propidSA;
 }
 
 /**
 **
 **/
-int wxMaracasRenderTabbedPanel::getPropId(){
-       return _propid;
+int wxMaracasRenderTabbedPanel::getPropIdSB()
+{
+       return _propidSB;
 }
 
+/**
+**
+**/
+int wxMaracasRenderTabbedPanel::getPropIdSC()
+{
+       return _propidSC;
+}
\ No newline at end of file