]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOWxTreeView.cpp
Changed validation methods from TreeView to GimmickView (Abstract)
[creaImageIO.git] / src2 / creaImageIOWxTreeView.cpp
index c8189585bd7e52a096e2ef5833235aee38e398b4..d34741cc9eaf3da4507746f85a60813822046001 100644 (file)
@@ -287,7 +287,7 @@ namespace creaImageIO
 
          for (int k=1; k<GetCtrl(l)->GetColumnCount(); k++)
              {
-
+  
                std::string val = (*j)->GetAttribute(mLevelList[l].key[k-1]);
                if (val.size()==0) val = "?";
                item.SetText( crea::std2wx(val));
@@ -459,196 +459,27 @@ namespace creaImageIO
 
   void WxTreeView::ValidateSelectedImages()
   {
-       int level=mLevelList.size();
-       std::vector<tree::Node*> sel=GetSelected(level+1);
-       bool valid=true;
-       std::string mess;
-       if(sel.size()>0)
-       {
-               std::vector<tree::Node*>::iterator i;
-               std::string row;
-               std::string col;
-               std::string plane;
-               
-               
-               //Validation between image sizes
-               for (i=sel.begin(); i!=sel.end() && valid; ++i)
-               {
-                       if(i==sel.begin())
-                       {
-                               row=(*i)->GetAttribute(mLevelList[level-1].key[1]);
-                               col=(*i)->GetAttribute(mLevelList[level-1].key[2]);
-                               plane=(*i)->GetAttribute(mLevelList[level-1].key[3]);
-                       }
-                       else
-                       {
-                               if(((*i)->GetAttribute(mLevelList[level-1].key[1]))!=row ||
-                                       ((*i)->GetAttribute(mLevelList[level-1].key[2]))!=col ||
-                                       ((*i)->GetAttribute(mLevelList[level-1].key[3]))!=plane)
-                                       {
-                                               mess="The selected images are not compatible.";
-                                               valid=false;
-                                       }
-                       }
-               }
-
-               //Dimention validation
-               //Compatibility with maximum 
-                       if(valid)
-                       {       
-                               
-                               int rows;
-                               int cols;
-                               int planes;
-                               std::string s;
-                               std::istringstream t(s);
-                               s=row;
-                               t >> rows;
-                               if(row==""){rows=1;}
-                               s=col;
-                               t >> cols;
-                               if(col==""){cols=1;}
-                               s=plane;
-                               t >> planes;
-                               if(plane==""){planes=1;}
-
-                               int dim = 0;
-                               if (planes>1) dim=3;
-                               else if (cols>1) dim=2;
-                               else if (rows>1) dim=1;
-                           
-                               if (dim == 0) 
-                               {
-                                       mess="Unknown image dimension : cannot select !";
-                                       valid= false;
-                               }
-                               else if (dim>GetMaxDimension())
-                               {
-                                       mess="Selecting ";
-                                       mess+=dim;
-                                       mess+="D images is not allowed !";
-                                       valid= false;
-                               }
-                               if ( dim == GetMaxDimension() )
-                               {
-                                       mess="Cannot add this image to selection : would result in a ";
-                                       mess+=(dim+1);
-                                       mess+="D image!";
-                                       
-                                       valid= false;
-                               }
-                               if ( dim < GetMinDimension() && sel.size()<2 )
-                               {
-                                       mess="Cannot build the selection as it would result in a ";
-                                       mess+=dim;
-                                       mess+="D image, and the minimum is ";
-                                       mess+=GetMinDimension();
-                                       mess+="D!";
-                                       valid= false;
-                               }
-                       }
-         }
-       else
-       {
-               mess="Cannot have 0 images selected";
-               valid=false;
-       }
-       
                //Send an event telling wether the selection is valid or not
                wxCommandEvent event( 0, GetId() );
                event.SetEventObject( this );
-               if(valid)
-               {
-                       mess="Selection OK !";
-                       event.SetInt(0);
-               }
-               else
-               {event.SetInt(1);}
-               event.SetString(crea::std2wx(mess));
+               std::vector<tree::Node*> sel=GetSelected((mLevelList.size()+1));
+               event.SetClientData(&sel);
                GetEventHandler()->ProcessEvent( event );
-         
-       
   }
-
   //================================================================
-  vtkImageData* WxTreeView::GetSelectedImage(int dim)
-  {
-       
-       return NULL;
-  }
-
-  void WxTreeView::GetSelectedImages(std::vector<vtkImageData*>& f, int dim)
+  void WxTreeView::GetSelectedAsString(std::vector<std::string>&s)
   {
-         /*
-       std::vector<tree::Node*> im=GetSelected(level+1);
+         int level=mLevelList.size();
+       std::vector<tree::Node*> sel=GetSelected(level+1);
+       std::vector<tree::Node*>::iterator i;
        
-    // Create the output data
-    if (im.size()==1) 
-      {
-               // Only one image : give it
-               vtkImageData* out = vtkImageData::New();
-               out->ShallowCopy(mReader.GetImage(im.front()->ImageGetFullFileName()));
-               f.push_back( out );
-      }
-    else if (im.size()>1)
+    for (i=sel.begin(); i!=sel.end(); ++i)
       {
-       vtkImageData* first = mReader.GetImage( im.front()->ImageGetFullFileName() );
-       if (first->GetDataDimension()==2) 
-         {     
-           // n2D to 3D
-           vtkImageData* out = vtkImageData::New();
-           out->CopyStructure(first);  
-           out->SetScalarType(first->GetScalarType());
-           int ext[6];
-           first->GetExtent(ext);
-           ext[5] = im.size();
-           out->SetExtent(ext);
-           // LG : TODO : Z Spacing  ?
-           
-           out->AllocateScalars();
-           
-           //first->Print(std::cout);
-           //      out->Print(std::cout);
-           
-           int dim[3];
-           first->GetDimensions(dim);
-           unsigned long imsize = 
-             ( (unsigned long)first->GetScalarPointer(0,1,0)
-               - (unsigned long)first->GetScalarPointer(0,0,0))
-             *dim[1];
-
-           int slice = 0;
-           std::vector<DicomNode*>::iterator it;
-           for (it=im.begin(); it!=im.end(); ++it) 
-             {
-               //std::cout << "copying slice "<<slice <<std::endl;
-               vtkImageData* cur = mReader.GetImage( (*it)->ImageGetFullFileName() );
-               
-               void* src = cur->GetScalarPointer(0,0,0);
-               void* dst = out->GetScalarPointer(0,0,slice);
-               //              std::cout << "src="<<src<<std::endl;
-               //              std::cout << "dst="<<dst<<std::endl;
-               //              std::cout << "siz="<<imsize<<std::endl;
-               memcpy(dst,src,imsize);
-
-               slice++;
-             }
-           f.push_back(out);
+                 std::string filename=(*i)->GetAttribute("FullFileName");
+                 s.push_back(filename);
          }
-       else 
-         {
-           // n3D
-           std::vector<DicomNode*>::iterator it;
-           for (it=im.begin(); it!=im.end(); ++it) 
-             {
-               vtkImageData* out = vtkImageData::New();
-               out->ShallowCopy(mReader.GetImage((*it)->ImageGetFullFileName()));
-               f.push_back(out);
-             }
-         }
-      }
-         */
   }
+  //================================================================
   BEGIN_EVENT_TABLE(WxTreeView, wxPanel)
   /*
     EVT_SIZE(MyFrame::OnSize)