]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/HistogramDialogComboBox.cxx
#2846 creaMaracasVisu Bug New Normal - HistogramDialogComboBox not finding good...
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / pPlotter / HistogramDialogComboBox.cxx
index 88d8c52a9ea34b5ecebfa8f2bc639f436c60990f..15d4495e401a6649a3f87145554f3c633854fcd7 100644 (file)
 HistogramDialogComboBox::HistogramDialogComboBox(wxWindow* parent)
 : wxPanel(parent)
 {
-       _img                    = NULL;
+       _img                            = NULL;
        _bitmapcombo            = NULL;
        _slidercolor            = NULL;
        _sliderwindowlevel      = NULL;
+       _ckboxActive            = NULL;
        colorBar_Bitmap         = NULL;
        _bitmapsizer            = NULL;
-
+       InitCurrentPathColorsFuntion();
        this->SetSizer(getBitmapCombo());
-       _img                    = NULL;
-       _currentitem            = -1;
+       _img                            = NULL;
+       _currentitem            = -1;    
        _maxgreyvalue           = 0;
-printf("EED HistogramDialogComboBox\n");
-#ifdef LINUX
-       std::string currentpath = crea::System::GetExecutablePath();
-
-
-    currentpath.append("../share/creaMaracasVisu/data/");
-printf("EED JCP OOOOJJJOOO cambiar esto HistogramDialogComboBox::HistogramDialog writting in this directory\n");
-    currentpath = "/home/davila/dataHistogram";
-
-
-       crea::System::createDirectory(currentpath.c_str());
-#endif
 }
 
+
 HistogramDialogComboBox::~HistogramDialogComboBox()
 {
 }
@@ -80,34 +70,39 @@ wxSizer* HistogramDialogComboBox::getBitmapCombo()
 
        wxBoxSizer* comboeditsizer = new wxBoxSizer(wxHORIZONTAL);
        _bitmapcombo = getBitmapComboElements();
-
+    BitmapComboItemSelect(0);
        wxBitmap bitmap1(Edit_xpm);
        wxBitmapButton* edit = new wxBitmapButton(this, -1, bitmap1,wxDefaultPosition,wxSize(30,30));
        Connect(edit->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&HistogramDialogComboBox::OnEditBitmapCombo);
-
+       _ckboxActive= new wxCheckBox( this, 
+                             -1, 
+                             _T(" "),
+                             wxDefaultPosition, 
+                             //wxSize(sizeX,sizeY),
+                             wxDefaultSize, 
+                             wxCHK_2STATE | wxALIGN_RIGHT);      
+       _ckboxActive->SetValue(false);
+
+    Connect( _ckboxActive->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) (void (wxPanel::*)(wxScrollEvent&))  &HistogramDialogComboBox::OnChkBoxActive);
+
+       comboeditsizer->Add(_ckboxActive,wxSizerFlags().Center().FixedMinSize());
        comboeditsizer->Add(_bitmapcombo,wxSizerFlags().Center().FixedMinSize());
        comboeditsizer->Add(edit,wxSizerFlags().Center());
-
        _bitmapsizer->Add(comboeditsizer,wxSizerFlags().FixedMinSize().Center());
        _bitmapsizer->AddSpacer(5);
        _bitmapsizer->Add(getSlidersWlCo(),wxSizerFlags().Expand().Center());
-
        return _bitmapsizer;
 }
 
 wxSizer* HistogramDialogComboBox::getSlidersWlCo()
 {
-       wxBoxSizer* sizersliders = new wxBoxSizer(wxVERTICAL);
-
-       _slidercolor = new wxSlider(this, -1,1,0,1,wxDefaultPosition,wxDefaultSize,wxSL_LABELS);
-       _sliderwindowlevel = new wxSlider(this, -1,1,0,1,wxDefaultPosition,wxDefaultSize,wxSL_LABELS);
-
+       wxBoxSizer* sizersliders        = new wxBoxSizer(wxVERTICAL);
+       _slidercolor                            = new wxSlider(this, -1,1,0,1,wxDefaultPosition,wxDefaultSize,wxSL_LABELS);
+       _sliderwindowlevel                      = new wxSlider(this, -1,1,0,1,wxDefaultPosition,wxDefaultSize,wxSL_LABELS);
        sizersliders->Add(_slidercolor,wxSizerFlags().Expand().Center());
        sizersliders->Add(_sliderwindowlevel,wxSizerFlags().Expand().Center());
-
-       Connect(_slidercolor->GetId(), wxEVT_SCROLL_THUMBTRACK, (wxObjectEventFunction)&HistogramDialogComboBox::OnColorLevelChanged);
+    Connect(_slidercolor->GetId(), wxEVT_SCROLL_THUMBTRACK, (wxObjectEventFunction)&HistogramDialogComboBox::OnColorLevelChanged);
        Connect(_sliderwindowlevel->GetId(), wxEVT_SCROLL_THUMBTRACK, (wxObjectEventFunction)&HistogramDialogComboBox::OnWindowLevelChanged);
-
        return sizersliders;
 }
 
@@ -115,7 +110,9 @@ double HistogramDialogComboBox::GetWindowLevel()
 {
    double val(0.0);
    if(_sliderwindowlevel != NULL)
+       {
       val= _sliderwindowlevel->GetValue();
+       }
    return val; // JPR
 }
 
@@ -123,10 +120,31 @@ double HistogramDialogComboBox::GetColorLevel()
 {
    double val(0.0);
    if(_slidercolor != NULL)
+       {
       val = _slidercolor->GetValue();
+       }
    return val; // JPR
 }
 
+
+bool HistogramDialogComboBox::GetActive()
+{
+       bool result = false;
+       if (_ckboxActive!=NULL) 
+       {
+               result = _ckboxActive->GetValue();
+       }
+       return result;
+}
+
+
+void HistogramDialogComboBox::OnChkBoxActive(wxCommandEvent& event)
+{
+   wxCommandEvent newevent(wxEVT_COMMAND_COMBOBOX_SELECTED,this->GetId());
+   ProcessEvent(newevent);
+}
+
+
 void HistogramDialogComboBox::OnColorLevelChanged(wxCommandEvent& event)
 {
    _slidercolor->GetValue();
@@ -176,39 +194,33 @@ void HistogramDialogComboBox::OnEditBitmapCombo(wxCommandEvent& event)
                        dialog->UpdateCurrentComboElement();
                        _bitmapsitems = dialog->getComboBoxItems();
 
-                       //std::string currentpath = crea::System::GetDllAppPath("bbcreaMaracasVisu"); // JPR
-                       std::string dllLastName;
-                       std::string currentpath;
-                       #ifdef WIN32
-                       dllLastName = "bbcreaMaracasVisu";
-                       currentpath = crea::System::GetDllAppPath(dllLastName);
-                       #endif
-                       #ifdef LINUX
-                       currentpath = crea::System::GetExecutablePath();
-                       currentpath.append("../share/creaMaracasVisu/data/");
-                       #endif
-                       currentpath.append(FILENAME);
-
                        std::vector<double> redvect,greenvect,bluevect;
                        std::vector<double> greyvect;
 
-                       saveCurrentConfiguration(_bitmapsitems, currentpath);
+                       saveCurrentConfiguration(_bitmapsitems, GetFileNameOfColorsFunction() );
                        wxBitmapComboBox* tempbitmapcombo = _bitmapcombo;
-                       for(int i = 0; i < _bitmapsitems.size();i++){
+                       for(int i = 0; i < _bitmapsitems.size();i++)
+                       {
                                delete _bitmapsitems[i];
                        }
                        _bitmapsitems.clear();
                        _bitmapcombo = getBitmapComboElements();
-                       if(_bitmapsizer->Replace(tempbitmapcombo,_bitmapcombo)){
-
-                               tempbitmapcombo->Destroy();
-                       }
+                       
+// EED Eraseme                 
+//                     if(_bitmapsizer->Replace(tempbitmapcombo,_bitmapcombo))
+//                     {
+//                             tempbitmapcombo->Destroy();
+//                     } else {
+//                             printf ("EED ERROR HistogramDialogComboBox::OnEditBitmapCombo. Can't replace bitmapcombo \n");
+//                     }
+                       
                        this->Layout();
                }
                dialog->Destroy();
        }
 }
 
+
 void HistogramDialogComboBox::saveCurrentConfiguration(std::vector<HistogramDialogComboBoxItem*>& itembitmaps,std::string filename)
 {
        std::ofstream file;
@@ -265,63 +277,93 @@ void HistogramDialogComboBox::saveCurrentConfiguration(std::vector<HistogramDial
        file.close();
 }
 
-wxBitmapComboBox* HistogramDialogComboBox::getBitmapComboElements()
+void HistogramDialogComboBox::InitCurrentPathColorsFuntion()
 {
-       std::string currentpath = "";
+      _currentpathColorsFuntion = "";
 #ifdef WIN32
-       currentpath = crea::System::GetDllAppPath("bbcreaMaracasVisu");
+       _currentpathColorsFuntion = crea::System::GetDllAppPath("bbcreaMaracasVisu");
+       _currentpathColorsFuntion.append("/data/");
 #endif
 #ifdef LINUX
-       currentpath = crea::System::GetExecutablePath();
-       currentpath.append("../share/CreaMaracasVisu/data/");
+       _currentpathColorsFuntion = crea::System::GetExecutablePath();
+       _currentpathColorsFuntion.append("/../share/creaMaracasVisu/data/");
+#endif
+       crea::System::createDirectory(_currentpathColorsFuntion.c_str());
+}
 
-printf("EED JCP OOOOJJJOOO cambiar esto HistogramDialogComboBox::HistogramDialog writting in this file ******************\n");
-    currentpath = "/home/davila/dataHistogram";
 
-#endif
-       currentpath.append(FILENAME);
 
-       std::cout<<"current file name " <<currentpath<<std::endl;
+std::string HistogramDialogComboBox::GetFileNameOfColorsFunction()
+{
+   std::string filename;
+   filename = _currentpathColorsFuntion;                                                       
+   filename.append(COLORSFUNCTIONFILENAME);                                                                                                                       
+   return filename;
+}
+
 
+wxBitmapComboBox* HistogramDialogComboBox::getBitmapComboElements()
+{
        std::vector<HistogramDialogComboBoxItem*> bitmapsitems;
-       OnLoadComboBoxData(bitmapsitems, currentpath);
+       OnLoadComboBoxData(bitmapsitems, GetFileNameOfColorsFunction() );
        _bitmapsitems = bitmapsitems;
        wxString* choices;
        choices = new wxString[bitmapsitems.size()];
        for(int i = 0; i < bitmapsitems.size();i++)
        {
-               choices[i] = _T("");
+               choices[i] = _T("Color Function");
+       }
+       
+       wxBitmapComboBox* bitmapcombo;
+//EED  wxBitmapComboBox* bitmapcombo = new wxBitmapComboBox(this, -1, _T(""), wxDefaultPosition, wxDefaultSize, bitmapsitems.size(),choices);
+       if (_bitmapcombo!=NULL)
+       {
+               _bitmapcombo->Clear();
+               bitmapcombo=_bitmapcombo;
+       } else {
+               bitmapcombo = new wxBitmapComboBox(this, -1, _T(""));
        }
-       wxBitmapComboBox* bitmapcombo = new wxBitmapComboBox(this, -1, _T(""), wxDefaultPosition, wxDefaultSize, bitmapsitems.size(),choices);
-       bitmapcombo->SetSize(65,30);
+//     wxBitmapComboBox* bitmapcombo = new wxBitmapComboBox(this, -1, _T(""));
+       bitmapcombo->SetSize(165,30);
 
        Connect(bitmapcombo->GetId(), wxEVT_COMMAND_COMBOBOX_SELECTED, (wxObjectEventFunction)&HistogramDialogComboBox::OnBitmapComboItemSelected);
 
        for(int i = 0; i < bitmapsitems.size(); i++)
        {
-        bitmapcombo->SetItemBitmap(i, bitmapsitems[i]->GetBitmap());
+               bitmapcombo->Append(_T("ColorFunction"), bitmapsitems[i]->GetBitmap() );
+//        bitmapcombo->SetItemBitmap(i, bitmapsitems[i]->GetBitmap());
        }
+       BitmapComboItemSelect(0);
        return  bitmapcombo;
 }
 
-void HistogramDialogComboBox::OnBitmapComboItemSelected(wxCommandEvent& event)
+
+void HistogramDialogComboBox::BitmapComboItemSelect(int value)
 {
+       HistogramDialogComboBoxItem* currentconfig;
        if(_bitmapcombo!=NULL)
        {
-               _currentitem = event.GetInt();
+               _currentitem = value;
+               _bitmapcombo->Select(value);
                if(_bitmapsitems.size()>_currentitem)
                {
-                       HistogramDialogComboBoxItem* currentconfig = _bitmapsitems[_currentitem];
-                       _greyvect = currentconfig->getGreyVector();
-                       _redvect = currentconfig->getRedVector();
-                       _greenvect = currentconfig->getGreenVector();
-                       _bluevect= currentconfig->getBlueVector();
-                       _greyvecttransfer = currentconfig->getGreyVectorTransfer();
-                       _value  = currentconfig->getValueVector();
+                       currentconfig           = _bitmapsitems[_currentitem];
+                       _greyvect                       = currentconfig->getGreyVector();
+                       _redvect                        = currentconfig->getRedVector();
+                       _greenvect                      = currentconfig->getGreenVector();
+                       _bluevect                       = currentconfig->getBlueVector();
+                       _greyvecttransfer       = currentconfig->getGreyVectorTransfer();
+                       _value                          = currentconfig->getValueVector();
                        wxCommandEvent newevent(wxEVT_COMMAND_COMBOBOX_SELECTED,this->GetId());
             ProcessEvent(newevent);
-               }
-       }
+               } // if size
+       } // _bitmapcombo
+}
+
+
+void HistogramDialogComboBox::OnBitmapComboItemSelected(wxCommandEvent& event)
+{
+       BitmapComboItemSelect(  event.GetInt() );
 }
 
 void HistogramDialogComboBox::OnLoadComboBoxData(std::vector<HistogramDialogComboBoxItem*>& itembitmaps, std::string filename)
@@ -343,6 +385,7 @@ void HistogramDialogComboBox::OnLoadComboBoxData(std::vector<HistogramDialogComb
 
        //std::cout<<filename<<std::endl;
        itembitmaps.clear();
+
        if(file.is_open())
        {
                bool add = false;
@@ -356,13 +399,13 @@ void HistogramDialogComboBox::OnLoadComboBoxData(std::vector<HistogramDialogComb
                {
                        item = new HistogramDialogComboBoxItem();
                }else if((int)(line.find("<greyValue>"))!=-1) {
-                       int pos1=line.find(">");
+            int pos1=line.find(">");
                        int pos2=line.find("<",pos1+1);
                        std::string x=line.substr(pos1+1,pos2-pos1-1);
                        gvtransfer=atof(x.c_str());
                        greyvecttransfunct.push_back(gvtransfer);
                }else if((int)(line.find("<intensity>"))!=-1) {
-                       int pos1=line.find(">");
+            int pos1=line.find(">");
                        int pos2=line.find("<",pos1+1);
                        std::string x=line.substr(pos1+1,pos2-pos1-1);
                        intensity=atof(x.c_str());
@@ -436,10 +479,11 @@ void HistogramDialogComboBox::OnLoadComboBoxData(std::vector<HistogramDialogComb
 **/
 void HistogramDialogComboBox::GetValuesPointsFunction(std::vector<double>& greylevel,std::vector<double>& value)
 {
-       for(int i = 0; i < _greyvecttransfer.size();i++) {
+       for(int i = 0; i < _greyvecttransfer.size();i++) 
+       {
                greylevel.push_back(_greyvecttransfer[i]*_maxgreyvalue);
                value.push_back(_value[i]);
-       }
+       } // for i
 }
 
 /**
@@ -451,10 +495,12 @@ void HistogramDialogComboBox::GetValuesColorPointsFunction(std::vector<double>&
                                                                std::vector<double>& green,
                                                                std::vector<double>& blue)
 {
-       for(int i = 0; i < _greyvect.size();i++) {
+       for(int i = 0; i < _greyvect.size();i++) 
+       {
                greylevel.push_back(_greyvect[i]*_maxgreyvalue);
                red.push_back(_redvect[i]);
                green.push_back(_greenvect[i]);
                blue.push_back(_bluevect[i]);
-       }
+       } // for i
 }
+