]> Creatis software - creaContours.git/blobdiff - lib/Interface_ManagerContour_NDimensions/wxInstantChooserPanel.cxx
Feature #1772 Add licence terms for all files.
[creaContours.git] / lib / Interface_ManagerContour_NDimensions / wxInstantChooserPanel.cxx
index 3184c942ac9dbcbc994e441c860f94685f6d0ae2..a4de255267091ed5b92f9d2eed094029eda0cf5d 100644 (file)
@@ -1,9 +1,38 @@
+/*# ---------------------------------------------------------------------
+#
+# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
+#                        pour la Sant�)
+# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+# Previous Authors : Laurent Guigues, Jean-Pierre Roux
+# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
+#
+#  This software is governed by the CeCILL-B license under French law and
+#  abiding by the rules of distribution of free software. You can  use,
+#  modify and/ or redistribute the software under the terms of the CeCILL-B
+#  license as circulated by CEA, CNRS and INRIA at the following URL
+#  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+#  or in the file LICENSE.txt.
+#
+#  As a counterpart to the access to the source code and  rights to copy,
+#  modify and redistribute granted by the license, users are provided only
+#  with a limited warranty  and the software's author,  the holder of the
+#  economic rights,  and the successive licensors  have only  limited
+#  liability.
+#
+#  The fact that you are presently reading this means that you have had
+#  knowledge of the CeCILL-B license and that you accept its terms.
+# ------------------------------------------------------------------------ */
+
 //----------------------------------------------------------------------------------------------------------------
 // Class definition include
 //----------------------------------------------------------------------------------------------------------------
 #include "wxInstantChooserPanel.h"
 #include "wxContourMainFrame.h"
 
+//Test JCP 13-10-08
+//#include "wxContourEventHandler.h"
+//Test JCP 13-10-08
+
 //----------------------------------------------------------------------------------------------------------------
 // Class implementation
 //----------------------------------------------------------------------------------------------------------------
@@ -52,7 +81,7 @@ DEFINE_EVENT_TYPE( wxINSTANT_CHOOSER_CHANGE )
                sizer->Add( _outSizer, 1, wxEXPAND| wxGROW );
                sizer->Add( resolutionSizer, 1, wxEXPAND | wxGROW );
                SetSizer( sizer );
-               Connect( wxID_ANY,  wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxInstantChooserPanel:: onChechBoxClicked );               
+               Connect( wxID_ANY,  wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxInstantChooserPanel:: onCheckBoxClicked );               
 
        }
 
@@ -75,7 +104,7 @@ DEFINE_EVENT_TYPE( wxINSTANT_CHOOSER_CHANGE )
                sizer->Add( _outSizer, 1, wxEXPAND| wxGROW );
                sizer->Add( _resolutionSlider, 1, wxEXPAND | wxGROW );
                SetSizer( sizer );
-               Connect( wxID_ANY,  wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxInstantChooserPanel:: onChechBoxClicked );               
+               Connect( wxID_ANY,  wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxInstantChooserPanel:: onCheckBoxClicked );               
        }
 
        wxInstantChooserPanel :: ~wxInstantChooserPanel()
@@ -130,7 +159,7 @@ DEFINE_EVENT_TYPE( wxINSTANT_CHOOSER_CHANGE )
                int value = _lastConceptUpdated->getActualValue();
                int min = _lastConceptUpdated->getMinValue();
                int max = _lastConceptUpdated->getMaxValue();
-               int delta = (int) (pow( 2, _resolutionSlider->GetValue() ));
+               int delta = (int) (pow((double) 2, _resolutionSlider->GetValue() ));
                int minTmp   = value - delta/2;
                int maxTmp   = value + delta/2;
                if (minTmp<min)
@@ -149,7 +178,7 @@ DEFINE_EVENT_TYPE( wxINSTANT_CHOOSER_CHANGE )
                }
                else
                {
-                       for(int i=0; i<_concepts->size(); i++)
+                       for(int i=0; i< (int)(_concepts->size()); i++)
                        {
                                changeResolutionAtConceptControl( (*_concepts)[i] );
                        }
@@ -157,9 +186,9 @@ DEFINE_EVENT_TYPE( wxINSTANT_CHOOSER_CHANGE )
 
        }
        //------------------------------------------------------------------------------------------------------------
-       void wxInstantChooserPanel :: onChechBoxClicked( wxCommandEvent& event )
+       void wxInstantChooserPanel :: onCheckBoxClicked( wxCommandEvent& event )
        {
-               int groupID = (int)event.GetClientData();
+               /*int groupID = (int)event.GetClientData();
                wxConceptControl * eventConcept = (wxConceptControl *)event.GetEventObject();
                if ( eventConcept->getIfChecked( groupID ) )
                {
@@ -182,6 +211,32 @@ DEFINE_EVENT_TYPE( wxINSTANT_CHOOSER_CHANGE )
                                        }                                       
                                }
                        }                                       
+               }*/
+
+               int groupID = *(int*)event.GetClientData();
+               wxConceptControl * eventConcept = (wxConceptControl *)event.GetEventObject();
+               if ( eventConcept->getIfChecked( groupID ) )
+               {
+                       int size = _concepts->size();
+                       wxConceptControl * aConcept = NULL;
+//                     int accum = 0;
+
+                       for(int i = 0; i < eventConcept->getNumCheckBox();i++){
+                               if(i!=groupID){
+                                       eventConcept->clearCheckAt(i);
+                               }
+                       }
+                       for(int i=0; i<size; i++)
+                       {
+                               aConcept = (*_concepts)[i]; 
+                               if( aConcept!= eventConcept )
+                               {
+                                       if( aConcept->getIfChecked( groupID ) )
+                                       {       
+                                               aConcept->clearCheckAt( groupID );
+                                       }                                       
+                               }
+                       }                       
                }
        }
 
@@ -196,8 +251,19 @@ DEFINE_EVENT_TYPE( wxINSTANT_CHOOSER_CHANGE )
                //  Sending the event of wxINSTANT_CHOOSER_CHANGE
                //-------------------------------------------------
                wxCommandEvent newevent(wxINSTANT_CHOOSER_CHANGE,GetId());  
-               _eventHandler->ProcessEvent(newevent);
+               //this->onChangeInstant(newevent);
+               ConceptDataWrap * dataConcept = getLastConceptData(); 
+               if(getIfConceptCheckedAt( dataConcept->getName(), 0 )){
+                       wxContourMainFrame::getInstance()->onChangeInstantInstantPanel(dataConcept->getName(), dataConcept->getActualValue(), dataConcept->getMinShowedValue(), dataConcept->getMaxShowedValue());
+               }
+               //((wxContourEventHandler*)_eventHandler)->onChangeInstant(newevent);
+               //_eventHandler->ProcessEvent(newevent);
        }
+
+       void wxInstantChooserPanel :: onChangeInstant( wxCommandEvent& event ){
+               
+       }
+
        //------------------------------------------------------------------------------------------------------------
        //  Methods for sending events
        //------------------------------------------------------------------------------------------------------------
@@ -223,7 +289,7 @@ DEFINE_EVENT_TYPE( wxINSTANT_CHOOSER_CHANGE )
        void wxInstantChooserPanel :: setInstant(std::vector<int> choiceInstant)
        {               
                int max = _concepts->size();
-               if( choiceInstant.size() == max )
+               if( (int)(choiceInstant.size()) == max )
                {
                        int i = 0;
                        while(i< max)
@@ -347,7 +413,7 @@ DEFINE_EVENT_TYPE( wxINSTANT_CHOOSER_CHANGE )
                int value = theConceptToUpdate->getActualValue();
                int min = theConceptToUpdate->getMinValue();
                int max = theConceptToUpdate->getMaxValue();
-               int delta = (int) (pow( 2, _resolutionSlider->GetValue() ));
+               int delta = (int) (pow((double) 2, _resolutionSlider->GetValue() ));
                int minTmp   = value - delta/2;
                int maxTmp   = value + delta/2;
                if (minTmp<min)
@@ -432,7 +498,7 @@ DEFINE_EVENT_TYPE( wxINSTANT_CHOOSER_CHANGE )
                bool isChecked = false;
 
                int i,size = _concepts->size();
-               wxConceptControl * aConcept = NULL;                     
+//             wxConceptControl * aConcept = NULL;                     
                for ( i=0; i<size && !isChecked; i++ )
                {       
                        if( (*_concepts)[i]->getName().compare( theConceptName ) == 0 )
@@ -445,3 +511,17 @@ DEFINE_EVENT_TYPE( wxINSTANT_CHOOSER_CHANGE )
        }
         
         
+       void wxInstantChooserPanel::addConcepts(std::vector<std::string> conceptNameVect,std::vector<int> conceptSizeVect){
+               int i=0;
+               int max = conceptNameVect.size();                       
+               for( ; i<max; i++)
+               {
+                       if( conceptNameVect[i].compare("Axe Depth") == 0 )
+                       {
+                               addConcept( conceptNameVect[i], 0, conceptSizeVect[i], 1);                                      
+                       } else {
+                               addConcept( conceptNameVect[i], 1, conceptSizeVect[i], 1);
+                       } // if
+               }
+       }
+