]> Creatis software - creaImageIO.git/commitdiff
Add GetSelectImagesInVector()
authorjean-pierre roux <jean-pierre.roux@creatis.insa-lyon.fr>
Thu, 22 Oct 2009 12:25:32 +0000 (12:25 +0000)
committerjean-pierre roux <jean-pierre.roux@creatis.insa-lyon.fr>
Thu, 22 Oct 2009 12:25:32 +0000 (12:25 +0000)
src2/creaImageIODicomImageReader.cpp
src2/creaImageIOGimmickView.cpp
src2/creaImageIOGimmickView.h
src2/creaImageIOMultiThreadImageReader.cpp
src2/creaImageIOTreeDescriptor.cpp
src2/creaImageIOWxGimmickPanel.h
src2/creaImageIOWxGimmickReaderDialog.cpp
src2/creaImageIOWxGimmickReaderDialog.h
src2/creaImageIOWxGimmickView.cpp
src2/creaImageIOWxGimmickView.h
src2/data/localdatabase_Descriptor.dscp

index 96d56724d04446da73144a5af94445602c1c06d2..66c1b008b68410b895b757e515baae66fcf6b200 100644 (file)
@@ -30,8 +30,7 @@ namespace creaImageIO
   //=====================================================================  
   bool DicomImageReader::CanRead(const std::string& filename)
   { 
-    
-       GDCM_NAME_SPACE::Document*doc;
+    GDCM_NAME_SPACE::Document*doc;
     GDCM_NAME_SPACE::File* file = GDCM_NAME_SPACE::File::New();
     file->SetLoadMode( GDCM_NAME_SPACE::LD_ALL);
     file->SetFileName(filename.c_str());
@@ -50,7 +49,6 @@ namespace creaImageIO
   //=====================================================================
   vtkImageData* DicomImageReader::ReadImage(const std::string& filename)
   {
-    
     vtkImageData* im = 0;
     try
       {
@@ -66,7 +64,7 @@ namespace creaImageIO
       }
     return im;
   }
-  
+
   //=====================================================================
   void DicomImageReader::PushBackExtensions(std::vector<std::string>& v)
   {
@@ -90,7 +88,6 @@ namespace creaImageIO
       {
        return str.substr(0,str.size()-1);
       }
-    
     return str;
   }
   //========================================================================
@@ -99,14 +96,13 @@ namespace creaImageIO
   void DicomImageReader::ReadAttributes(const std::string& filename, 
                      std::map<std::string,std::string>& attr)
   {
     GimmickMessage(2,"Reading attributes from DICOM file '"
                   <<filename<<"'"<<std::endl);
-    
-       GDCM_NAME_SPACE::File* file = GDCM_NAME_SPACE::File::New();
 
-       GDCM_NAME_SPACE::Document *doc= GDCM_NAME_SPACE::File::New();
-       doc->SetLoadMode( GDCM_NAME_SPACE::LD_ALL);
+    GDCM_NAME_SPACE::File* file = GDCM_NAME_SPACE::File::New();
+
+    GDCM_NAME_SPACE::Document *doc= GDCM_NAME_SPACE::File::New();
+    doc->SetLoadMode( GDCM_NAME_SPACE::LD_ALL);
     doc->SetFileName(filename.c_str());
     doc->Load();
     file->SetLoadMode( GDCM_NAME_SPACE::LD_ALL);
@@ -114,7 +110,6 @@ namespace creaImageIO
     file->Load();
     if (file->IsReadable() ||((GDCM_NAME_SPACE::Document*) file)->IsReadable())
       {
-       
        std::map<std::string,std::string>::iterator i;
        for (i=attr.begin();i!=attr.end();++i)
          {
@@ -149,7 +144,7 @@ namespace creaImageIO
       }
     file->Delete();
   }
-  
+
   //=====================================================================
   
 } // namespace creaImageIO
index b213cb1e474fc50361bdd1538207eec478b6173a..b75dcdde5569de43dde9cf1e1c4595721963af45 100644 (file)
@@ -259,17 +259,15 @@ namespace creaImageIO
                        out << mImageExtent->GetDimension() << "D image " << mImageExtent->Get(0) << "x"<< mImageExtent->Get(1) << "x"<< mImageExtent->Get(2) <<" selected";
                mMessage = out.str();
                        }
-                       
                }
                else
                {
                        mMessage="The selected images are not compatible.";
                        valid=false;
                }
-       }
+         }
        }
 
-       
        modifyValidationSignal(valid);
        SetMessage(mMessage);
        return valid;
@@ -281,12 +279,10 @@ namespace creaImageIO
          mValidationSignal(ivalid);
   }
 
-
    //======================================================================
   ///Reads Images (Non Threaded)
-void GimmickView::ReadImagesNotThreaded(std::vector<vtkImageData*>& s,std::vector<std::string> im, int dimension)
+void GimmickView::ReadImagesNotThreaded(std::vector<vtkImageData*>& s, std::vector<std::string> im, int dimension)
 {
-         
        // Create the output data
        if (im.size()==1) 
        {                 
@@ -298,13 +294,13 @@ void GimmickView::ReadImagesNotThreaded(std::vector<vtkImageData*>& s,std::vecto
                out->ShallowCopy(mReader.GetImage(im.front()));
                s.push_back( out );
        }         
-    else if (im.size()>1)
+       else if (im.size()>1) // Test inutile ? JPR
        {
                vtkImageData* first = mReader.GetImage( im.front());
                if (dimension == 2) 
                {  
                 // n3D
-                 std::vector<std::string>::iterator it;
+                   std::vector<std::string>::iterator it;
                        for (it=im.begin(); it!=im.end(); ++it) 
                        {
                                vtkImageData* out = vtkImageData::New();
@@ -320,7 +316,8 @@ void GimmickView::ReadImagesNotThreaded(std::vector<vtkImageData*>& s,std::vecto
                        out->SetScalarType(first->GetScalarType());
                        int ext[6];
                        first->GetExtent(ext);
-                       ext[5] = im.size()-1;
+                       //ext[5] = im.size()-1;        // JPR
+                       ext[5] = ext[5] * im.size()-1; // deal with multiframes //JPR
                        out->SetExtent(ext);
                        // LG : TODO : Z Spacing  ?
 
@@ -331,7 +328,10 @@ void GimmickView::ReadImagesNotThreaded(std::vector<vtkImageData*>& s,std::vecto
 
                        int dim[3];
                        first->GetDimensions(dim);
-                       unsigned long imsize = dim[0] * dim[1];/*
+                       unsigned long imsize = dim[0] * dim[1];
+                       imsize = imsize * dim[2] ;  // deal with multiframes// JPR
+
+                        /*
                                ( (unsigned long)first->GetScalarPointer(0,1,0)
                        - (unsigned long)first->GetScalarPointer(0,0,0))
                                *dim[1];*/
@@ -339,9 +339,9 @@ void GimmickView::ReadImagesNotThreaded(std::vector<vtkImageData*>& s,std::vecto
                        int slice = 0;
                        std::vector<std::string>::iterator it;
                        for (it=im.begin(); it!=im.end(); ++it) 
-                               {
+                       {
                        //std::cout << "copying slice "<<slice <<std::endl;
-                                       vtkImageData* cur = mReader.GetImage( (*it));
+                       vtkImageData* cur = mReader.GetImage( (*it));
 
                        void* src = cur->GetScalarPointer(0,0,0);
                        void* dst = out->GetScalarPointer(0,0,slice);
@@ -352,11 +352,53 @@ void GimmickView::ReadImagesNotThreaded(std::vector<vtkImageData*>& s,std::vecto
                        memcpy(dst,src,imsize);
 
                        slice++;
-                               }       
+                       }       
                        s.push_back(out);
-                               
                }
-       }       
+       }
+}
+  //======================================================================
+
+void GimmickView::ReadImagesNotThreadedInVector(std::vector<vtkImageData*>& s, std::vector<std::string> im, int dimension)
+{
+       // Create the output data
+       if (im.size()==1)
+       {
+               // Only one image : give it
+               vtkImageData* out = vtkImageData::New();
+               GimmickDebugMessage(3, "State Check: Full Filename: "
+                                               <<im.front()
+                                               <<std::endl);
+               out->ShallowCopy(mReader.GetImage(im.front()));
+               s.push_back( out );
+       }
+       else if (im.size()>1) // Test inutile ? JPR
+       {
+               vtkImageData* first = mReader.GetImage( im.front());
+               if (dimension == 2)
+               {
+                // n3D
+                 std::vector<std::string>::iterator it;
+                       for (it=im.begin(); it!=im.end(); ++it)
+                       {
+                               vtkImageData* out = vtkImageData::New();
+                               out->ShallowCopy(mReader.GetImage(*it));
+                               s.push_back(out);
+                       }
+               }
+               else
+               {
+                       // n2D to 3D // NO!
+                       // n *2D + T in a vector :
+                       
+                       std::vector<std::string>::iterator it;
+                       for (it=im.begin(); it!=im.end(); ++it) 
+                       {
+                               vtkImageData* out = mReader.GetImage( (*it));
+                               s.push_back(out);
+                       }
+               }
+       }
 }
   //======================================================================
 
@@ -391,10 +433,10 @@ void GimmickView::ReadImagesNotThreaded(std::vector<vtkImageData*>& s,std::vecto
                {
                  //What to do in this case?
                  /*
-               GimmickDebugMessage(5,
+                       GimmickDebugMessage(5,
                                        "Pushing unknown image in queue"
                                        <<std::endl);
-               mImageEventQueue.push_back(ImageEventType(image));*/
+                       mImageEventQueue.push_back(ImageEventType(image));*/
                        return;
                }
                ImageEventTypeMap::iterator i;
@@ -404,8 +446,8 @@ void GimmickView::ReadImagesNotThreaded(std::vector<vtkImageData*>& s,std::vecto
                        if (i!=mImageEventMap.end())
                        {
                                GimmickDebugMessage(5,
-                                                       "Putting image of file '"<<filename<<"' on pointer"
-                                                       <<std::endl);
+                                               "Putting image of file '"<<filename<<"' on pointer"
+                                               <<std::endl);
                                ImageEventType ie(i->second);
                                ie.image = image;
                                ie.pointerHolder->Set(ie.image);
@@ -445,7 +487,6 @@ void GimmickView::ReadImagesNotThreaded(std::vector<vtkImageData*>& s,std::vecto
                ie.pointerHolder->Set(GetDefaultImage());
                //mImageEventMap.erase(i);
                }
-
        }
   }
 
@@ -455,9 +496,7 @@ void GimmickView::ReadImagesNotThreaded(std::vector<vtkImageData*>& s,std::vecto
   void GimmickView::ConnectValidationObserver(ValidationCallbackType callback)
   {
     mValidationSignal.connect(callback);
-  }
-         
+  }      
   
 } // EO namespace creaImageIO
 
-
index 389fd07029bd25fc38e75eb61b1837be5afb1442..463b12a73baad29fd0b81eb7dc90f2b81224a9fd 100644 (file)
@@ -20,9 +20,8 @@
 #define GIMMICK_4D_IMAGE_SELECTION 4
 
 #define NATIVE 0
-#define _2D 2
-#define _3D 3
-
+#define _2D    2
+#define _3D    3
 
 namespace creaImageIO
 {
@@ -60,8 +59,12 @@ namespace creaImageIO
       /// Finalize 
       virtual void Finalize();
 
-         //Returns the maximal priority
-         int GetMaximalPriority(){return mReader.GetMaximalPriority();}
+         ///Returns the maximal priority
+      int GetMaximalPriority(){return mReader.GetMaximalPriority();}
+
+      ///Adds the selected Images to the given vector
+      virtual void GetSelectedImagesInVector(std::vector<vtkImageData*>& s, int dim)
+       { GimmickError("INTERNAL ERROR : GetSelectedImagesInVector not implemented"); }
 
       ///Adds the selected Images to the given vector and validates to see if they comply with the given parameter (4D)
       virtual void GetSelectedImages(std::vector<vtkImageData*>& s, int dim) 
@@ -95,24 +98,29 @@ namespace creaImageIO
          virtual void SaveAs(const std::vector<std::string>& filenames)
          { GimmickError("INTERNAL ERROR : SaveAs not implemented"); }
 
-
          /// No selected image
          bool NoValidateSelected();
+
       ///Validates the dimension compliance of the images with the maximum and minimum given, and between their sizes
       bool ValidateSelected (tree::Node* sel, int min_dim, int max_dim);
-      
+
       ///Reads the vector of images, builds it in the dimension required and returns them in the supplied vector.
          void ReadImagesNotThreaded(std::vector<vtkImageData*>& s,std::vector<std::string> files, int dim);
-      ///Requests the reading of an image with priority and index in the 
+
+      ///Reads the vector of images, builds it in the dimension required and returns them in the supplied vector.
+         void ReadImagesNotThreadedInVector(std::vector<vtkImageData*>& s,std::vector<std::string> files, int dim);
+
+///Requests the reading of an image with priority and index in the 
       /// current selection (-1 if not in selection)
       //void RequestReading(tree::Node* n, int prio, int selection_index , ImagePointerHolder *p);
          void RequestReading(tree::Node* n, int prio, int selection_index , boost::shared_ptr<ImagePointerHolder> p);
-     
-      
+
       ///Obtains the message of the state
       std::string GetMessage(){return mMess;}
-      ///Obtains the message of the state
+
+     ///Obtains the message of the state
       void SetMessage(std::string mess){mMess=mess;}
+
          ///Resets the data of the extent and begins a new selection
          void ResetExtent();
 
@@ -129,6 +137,7 @@ namespace creaImageIO
       /// Updates the TreeView of given name from level l to bottom
       /// (calls the virtual method TreeView::UpdateLevel(l))
       virtual void UpdateTreeViewLevel(const std::string&, int l);
+
          // Multi-thread image reader callback
          void OnMultiThreadImageReaderEvent(const std::string& filename,
                                       MultiThreadImageReaderUser::EventType t,
@@ -136,7 +145,6 @@ namespace creaImageIO
 
       vtkImageData* GetDefaultImage() { return mReader.GetImage(""); }
 
-
       //=============================================
       typedef boost::signal<void (bool)>  ValidationSignalType;
       typedef ValidationSignalType::slot_function_type ValidationCallbackType;
@@ -153,21 +161,22 @@ namespace creaImageIO
       void ConnectValidationObserver(ValidationCallbackType callback);
      //==================================================================
 
-         
-
        void modifyValidationSignal(bool ivalid);
 
     private:
-       
+
       /// Controller which manages the interaction with the model
-               boost::shared_ptr< Gimmick> mGimmick;
+      boost::shared_ptr< Gimmick> mGimmick;
+
       /// The views 
       TreeViewMapType mTreeViewMap;
+
       /// The message that results from the validation
       std::string mMess;
 
       /// Multi-thread image reader
       MultiThreadImageReader mReader;
+
       /// Internal type of image reading event
       /// If the image pointer is non null then the image is available (loaded)
       /// else it has been unloaded
@@ -176,7 +185,7 @@ namespace creaImageIO
        ImageEventType( tree::Node* no = 0,   
                        int sel_index = -1)
 //                     ImagePointerHolder* ph= 0)
-: node(no), index(sel_index){}//,  pointerHolder(ph){}
+          : node(no), index(sel_index){}//,  pointerHolder(ph){}
         ImageEventType(vtkImageData* im )
          : image(im) {}
         tree::Node* node;
@@ -188,26 +197,29 @@ namespace creaImageIO
       /// Map of images' names to ImageEventType
       /// Used to associated a filename to a the data of a request
       ImageEventTypeMap mImageEventMap;
+
       // queue of image event 
       typedef std::deque<ImageEventType> ImageEventQueueType;
+
       //ImageEventQueueType mImageEventQueue;
 
          ///The current image extent
          boost::shared_ptr<ImageExtent> mImageExtent;
+
          ///The validation signal
          ValidationSignalType mValidationSignal;
+
          ///Boolean that determines if the selection is valid
          bool valid;
+
          ///Boolean that determines if the reader has been started
          bool mReaderStarted;
-      
+
        };
   // EO class GimmickView
     //=====================================================================
-  
 
  
 } // EO namespace creaImageIO
 
 // EOF
index 65d2aab22f32643f59b6c921abbe5816b37c2837..9645f09f163337bb7a217dc95e08de406cf57c40 100644 (file)
@@ -3,7 +3,6 @@
 #include <wx/utils.h>
 #include <creaImageIOSystem.h>
 
-
 namespace creaImageIO
 {
 
@@ -48,7 +47,6 @@ namespace creaImageIO
        
   };
 
   //=====================================================================
 
   
@@ -69,7 +67,7 @@ namespace creaImageIO
                  boost::shared_ptr<ThreadedImageReader> t(new ThreadedImageReader(this), ThreadedImageReader::deleter());
        mThreadedImageReaderList.push_back(t);
         std::cout << "  ===> Thread "<<i
-                             <<" successfully added"<< std::endl;
+                     <<" successfully added"<< std::endl;
       }
     mNumberOfThreadedReadersRunning = 0;
     // Init the queue
@@ -213,7 +211,7 @@ namespace creaImageIO
                                        int priority )
   {
        wxMutexLocker lock(GetMultiThreadImageReaderUserMutex()); //mMutex);
-    
+
          if (mNumberOfThreadedReadersRunning==0)
 //    if (mThreadedImageReaderList.size()==0) 
       {
@@ -242,7 +240,6 @@ namespace creaImageIO
        return;
       }
 
-
     ImageToLoad itl(user,filename);
     ImageMapType::iterator i = mImages.find(&itl);
     if (i!=mImages.end())
@@ -483,7 +480,6 @@ namespace creaImageIO
 
        GimmickMessage(5," ==> Total mem = "<<mTotalMem<<" Ko "<<std::endl);
 
-
        if (user!=0) 
          {
            //      std::cout << "unlock..."<<std::endl;
@@ -494,7 +490,6 @@ namespace creaImageIO
               MultiThreadImageReaderUser::ImageUnloaded,
               0);
            //      std::cout << "event ok"<<std::endl;
-
          }     
 
        if (unload->Index()>=0)
@@ -514,8 +509,6 @@ namespace creaImageIO
        //          std::cout << "delete ok."<<std::endl;
 
       }
-    
-  
   }
   //=====================================================================
 
index 30c8b7aa8ba32fa15d9b81ba01d122bb23d7d485..d2cfd2fe593027d37120c3c9b417d1a02da3202a 100644 (file)
@@ -19,9 +19,9 @@ namespace creaImageIO
     const unsigned int AttributeDescriptor::PRIVATE = 1;
     /// The attribute enters in unique identifier constitution 
     const unsigned int AttributeDescriptor::IDENTIFIER = 2;
-       /// The attribute can be edited
-       const unsigned int AttributeDescriptor::EDITABLE = 3;
-       /// the attribute describes the node
+    /// The attribute can be edited
+    const unsigned int AttributeDescriptor::EDITABLE = 3;
+    /// the attribute describes the node
     const unsigned int AttributeDescriptor::LABEL = 4;
     //==================================================================
 
@@ -60,24 +60,24 @@ namespace creaImageIO
       
       // Patient level
       Add(LevelDescriptor("Patient"));
-         Add(AttributeDescriptor("NumberOfChildren","#Series",0),1);   // Number of Series
+      Add(AttributeDescriptor("NumberOfChildren","#Series",0),1);   // Number of Series
       Add(AttributeDescriptor(0x0010,0x0010,   // Patient name
                              AttributeDescriptor::LABEL),1);
       Add(AttributeDescriptor(0x0010,0x0040),1); // Patient sex
       Add(AttributeDescriptor(0x0010,0x0030),1); // Patient birthday
       Add(AttributeDescriptor(0x0010,0x0020,   // Patient ID
                              AttributeDescriptor::IDENTIFIER),1);
+
       // Study-series level
       Add(LevelDescriptor("Series"));
-         Add(AttributeDescriptor("NumberOfChildren","#Images",0),2);   // Number of images
+      Add(AttributeDescriptor("NumberOfChildren","#Images",0),2);   // Number of images
       Add(AttributeDescriptor(0x0008,0x0060,    // Modality
                              AttributeDescriptor::LABEL),2);
       Add(AttributeDescriptor(0x0008,0x1030),2); // Study Description
       Add(AttributeDescriptor(0x0008,0x103E),2); // Description
       Add(AttributeDescriptor(0x0008,0x0080),2); // Institution Name
       Add(AttributeDescriptor(0x0008,0x0081),2); // Institution Adress
-         Add(AttributeDescriptor(0x0008,0x1010),2); // Station Name
+      Add(AttributeDescriptor(0x0008,0x1010),2); // Station Name
       Add(AttributeDescriptor(0x0008,0x1048),2); // Physician of Record
       Add(AttributeDescriptor(0x0008,0x1050),2); // Performing Physician's Name
       Add(AttributeDescriptor(0x0018,0x1030),2); // Protocol Name
@@ -93,9 +93,9 @@ namespace creaImageIO
       Add(AttributeDescriptor(0x0020,0x000D   // Study Instance UID  
                                                    ),2);//AttributeDescriptor::IDENTIFIER),2);
       Add(AttributeDescriptor(0x0020,0x000E,   // Series Instance UID  
-                                                   AttributeDescriptor::IDENTIFIER),2);
+                               AttributeDescriptor::IDENTIFIER),2);
       // |
-      //                                                   AttributeDescriptor::LABEL),2);
+      //                       AttributeDescriptor::LABEL),2);
      
 
       // Image level
@@ -127,26 +127,25 @@ namespace creaImageIO
       Add(AttributeDescriptor(0x0020,0x4000),3); // Image Comments
 
       Add(AttributeDescriptor(0x0004,0x1500,   // File Name
-                                                   AttributeDescriptor::LABEL),3);
+                               AttributeDescriptor::LABEL),3);
       Add(AttributeDescriptor(0x0028,0x1052),3); // Rescale Intercept
       Add(AttributeDescriptor(0x0028,0x1053),3); // Rescale Slope
 
       Add(AttributeDescriptor(0x0050,0x0004),3); // Calibration Image
 
       Add(AttributeDescriptor(0x0020,0x0052   // Frame Reference UID
-                                                   ),3);
+                                          ),3);
       Add(AttributeDescriptor(0x0008,0x0016),3); // SOP Class UID
       Add(AttributeDescriptor("FullFileName",  // Full file name
-                                                   "Full file name",
-                                                   AttributeDescriptor::IDENTIFIER),3); 
-                                                                 
-     
+                               "Full file name",
+                               AttributeDescriptor::IDENTIFIER),3); 
+
     }
 
        //////////////////////////////////////////////////////////////
        // create a descriptor (name, attributes...) from a file)       //
-       // @param : file path                                                                           //
-       // return : -                                                                                           //
+       // @param : file path                                           //
+       // return : -                                                   //
        //////////////////////////////////////////////////////////////
        void Descriptor::createDescriptorfromFile(const std::string &i_name)
        {
@@ -212,7 +211,7 @@ namespace creaImageIO
 
                                else if(descriptors[0].find("#") != -1)
                                {
-                                               // commented line continue to next line
+                                       // commented line continue to next line
                                }
                                else
                                {       boost::algorithm::replace_all(descriptors[2],"_"," ");
@@ -222,7 +221,6 @@ namespace creaImageIO
                }
        }
 
-
     //==================================================================
 
     //==================================================================
@@ -248,6 +246,7 @@ namespace creaImageIO
     {
       mLevelDescriptorList.clear();
     }
+
     //==================================================================
 
     //==================================================================
@@ -269,6 +268,5 @@ namespace creaImageIO
            }
        }
     }
   }
 }
index 6df7f5c602d13bf77e95ab879bbf7277870d1056..21da84f0ab3f193909854f16034e9faec7ae99d2 100644 (file)
@@ -54,6 +54,11 @@ namespace creaImageIO
        mView->GetSelectedImages(s, dim); 
     }
 
+    void GetSelectedImagesInVector(std::vector<vtkImageData*>& s, int dim)
+    { 
+       mView->GetSelectedImagesInVector(s, dim); 
+    }
+
     void OnSelectedImage(bool t);
 
     void AddImagesToDB(std::string dir);
index 933a72312d11b5a1a185835d6fa0a74de39dbce1..7fe2b411dda7479f0b5c3ec4205aa29459b46e13 100644 (file)
@@ -14,8 +14,8 @@ namespace creaImageIO
                                               const wxPoint& pos,
                                               const wxSize& size,
                                               int min_dim,
-                                                  int max_dim,
-                                                  int output_dim,
+                                              int max_dim,
+                                              int output_dim,
                                               int threads)
  :   wxDialog( parent, 
                  id, 
@@ -87,11 +87,9 @@ namespace creaImageIO
       }
     if (mGimmick) 
       {
-                        mGimmick->Finalize();
-       //mGimmick->Finalize();
-//     delete mGimmick;
+       mGimmick->Finalize();
+       //delete mGimmick;
       }
-
   }
 
   ///Callback method on a selection
@@ -99,9 +97,6 @@ namespace creaImageIO
   {
     mOkButton->Enable(t);
   }
-
-
-
  
   //================================================================
   //BEGIN_EVENT_TABLE(WxGimmickReaderDialog, wxDialog)
index 8137a73b7d2af91e6e117ed32a102d0b42aad7c4..4b3e6b663cec6ba2aef2c2a11e0b0a2c1426f869 100644 (file)
@@ -34,7 +34,6 @@ namespace creaImageIO
 
     ~WxGimmickReaderDialog();
 
-
        //===============================================================================================
        //Image Selection
        //===============================================================================================
@@ -42,10 +41,12 @@ namespace creaImageIO
     void GetSelectedImages(std::vector<vtkImageData*>& s, int dim)
     { mView->GetSelectedImages(s, dim); }
 
+    void GetSelectedImagesInVector(std::vector<vtkImageData*>& s, int dim)
+    { mView->GetSelectedImagesInVector(s, dim); }
 
     void GetSelectedFiles(std::vector<std::string>& s) 
     { mView->GetSelectedFiles(s); }
-    
+
     void OnSelChanged(EventType& event);
     void OnContextualMenu(EventType& event);
     void OnMenuTest(wxCommandEvent& event);
@@ -55,13 +56,12 @@ namespace creaImageIO
     // void OnButtonCancel(wxCommandEvent& event);
 
   private :
-    
+
          boost::shared_ptr<Gimmick>      mGimmick;
     WxGimmickView* mView;
 
     wxButton* mOkButton;
     wxButton* mCancelButton;
-       
 
     enum 
       {
index 3b8d507ff11a0e286cd3e6de1433c246f337bacb..ddf43617e16dad7484f5f54dfbba364caf1d3cbb 100644 (file)
@@ -49,7 +49,7 @@ namespace creaImageIO
         TOOL_SETTINGS_ID    = 7,
         TOOL_TOOLS_ID       = 8,
         TOOL_CREATEDB_ID    = 9,
-               TOOL_PACS_ID                    = 10
+        TOOL_PACS_ID        = 10
     };
   //======================================================================
 
@@ -117,23 +117,21 @@ namespace creaImageIO
 
     // Create the tool bar
     CreateToolBar(); 
-    sizer->Add( mToolBar ,0, wxGROW  ,0);
+    sizer->Add( mToolBar, 0, wxGROW, 0);
 
     // Split part below toolbar into notebook for views and panel
     // for preview, messages...
     mSplitter = new wxSplitterWindow( this , -1);
-   
+
     // Notebook
     mNotebook = new wxNotebook(mSplitter,
-                              -1,wxDefaultPosition, wxDefaultSize, 0);
+                              -1, wxDefaultPosition, wxDefaultSize, 0);
 
     //Gimmick
     mGimmick=gimmick;
 
-      
-    mSelectionMaxDimension= max_dim;
-    mSelectionMinDimension= min_dim;
+    mSelectionMaxDimension = max_dim;
+    mSelectionMinDimension = min_dim;
     
     // Create the views
     CreateTreeViews();
@@ -173,14 +171,14 @@ namespace creaImageIO
     mSplitter->SplitHorizontally( mNotebook, mBottomPanel, 
                                  top_minsize);
 
-    sizer->Add( mSplitter,1,wxGROW  ,0);
+    sizer->Add( mSplitter, 1, wxGROW, 0);
 
     mProgressDialog=0;
     SetSizer( sizer );     
     SetAutoLayout(true);
     Layout();
     mListener=new Listener();
-    mListener->ConnectObserver(boost::bind( &WxGimmickView::OnDriveMount , this, _1 ) );
+    mListener->ConnectObserver(boost::bind( &WxGimmickView::OnDriveMount, this, _1 ) );
     mListener->Create();
     mListener->Run();
     mListener->Pause();
@@ -280,7 +278,7 @@ namespace creaImageIO
     GimmickMessage(2,"Creating the tree view for '"<<
                   name<<"'"<<std::endl);
     // Create the WxTreeView
-    WxTreeView* view = new WxTreeView(h,this,mNotebook,-1);
+    WxTreeView* view = new WxTreeView(h, this, mNotebook, -1);
 
     // TO DO : TEST THAT A VIEW WITH SAME NAME IS NOT
     // ALREADY IN THE MAP
@@ -296,7 +294,15 @@ namespace creaImageIO
   {
        std::vector<std::string> files;
        GetTreeViewMap()[crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection()))]->GetSelectedAsString(files);
-       ReadImagesNotThreaded(s,files,dim);
+       ReadImagesNotThreaded(s, files, dim);
+  }
+
+  //======================================================================
+  void WxGimmickView::GetSelectedImagesInVector(std::vector<vtkImageData*>& s, int dim)
+  {
+       std::vector<std::string> files;
+       GetTreeViewMap()[crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection()))]->GetSelectedAsString(files);
+       ReadImagesNotThreadedInVector(s, files, dim);
   }
   //======================================================================
 
@@ -325,17 +331,17 @@ namespace creaImageIO
 
     wxIcon icons[20];
     // should correspond to Icon_xxx enum
-    icons[Icon_accept] = wxIcon(accept_xpm);
-    icons[Icon_add] = wxIcon(add_xpm);
-    icons[Icon_folder_down] = wxIcon(folder_down_xpm);
-    icons[Icon_page_down] = wxIcon(page_down_xpm);
-    icons[Icon_remove] = wxIcon(remove_xpm);
-    icons[Icon_database_add] = wxIcon(database_add_xpm);
-    icons[Icon_help] = wxIcon(help_xpm);
-    icons[Icon_synchronize] = wxIcon(synchronize_xpm);
+    icons[Icon_accept]          = wxIcon(accept_xpm);
+    icons[Icon_add]             = wxIcon(add_xpm);
+    icons[Icon_folder_down]     = wxIcon(folder_down_xpm);
+    icons[Icon_page_down]       = wxIcon(page_down_xpm);
+    icons[Icon_remove]          = wxIcon(remove_xpm);
+    icons[Icon_database_add]    = wxIcon(database_add_xpm);
+    icons[Icon_help]            = wxIcon(help_xpm);
+    icons[Icon_synchronize]     = wxIcon(synchronize_xpm);
     icons[Icon_create_database] = wxIcon(create_database_xpm);
-    icons[Icon_settings] = wxIcon(settings_xpm);
-    icons[Icon_tools] = wxIcon(tools_xpm);
+    icons[Icon_settings]        = wxIcon(settings_xpm);
+    icons[Icon_tools]           = wxIcon(tools_xpm);
 
     //   unsigned int NbIcons = 8;
     // Make an image list containing small icons
@@ -392,8 +398,8 @@ namespace creaImageIO
                               1000,
                               this,
                               wxPD_ELAPSED_TIME |
-                              //                              wxPD_ESTIMATED_TIME | 
-                              //                              wxPD_REMAINING_TIME |
+                              // wxPD_ESTIMATED_TIME |
+                              // wxPD_REMAINING_TIME |
                               wxPD_CAN_ABORT );
 
        // TO DO : select the current tree handler
@@ -424,15 +430,13 @@ namespace creaImageIO
     
     if (FD->ShowModal()==wxID_OK)
     {
-
-       
        std::string dirname = wx2std (FD->GetPath());
        bool recurse =  isNeedRecursive(dirname);
        if (recurse)
        {
-             recurse = wxMessageBox(_T("Recurse into sub-directories ?"),  _T("Scan directory"),        wxYES_NO,this ) == wxYES ? true : false;
+             recurse = wxMessageBox(_T("Recurse into sub-directories ?"), _T("Scan directory"), wxYES_NO,this ) == wxYES ? true : false;
        }
-               
+
                wxBusyCursor busy;
                wxString title(_T("Adding directory"));
                if (recurse) 
@@ -444,24 +448,23 @@ namespace creaImageIO
                                        this,
                                        wxPD_ELAPSED_TIME | 
                                        wxPD_SMOOTH |
-                                       //                             wxPD_ESTIMATED_TIME | 
-                                       //                             wxPD_REMAINING_TIME |
+                                       // wxPD_ESTIMATED_TIME |
+                                       // wxPD_REMAINING_TIME |
                                        wxPD_CAN_ABORT );
-               
+
                mCurrentDirectory = FD->GetPath();  
                mGimmick->AddDir(crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection())),dirname,recurse);
                mProgressDialog->Pulse(_T("Updating view..."));
-               
+
                UpdateTreeViewLevel(crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection())),1);
                delete mProgressDialog;
                DisplayAddSummary();
-
          }
     mViewer->StartPlayer();
   }
 
 
-   //=================================================
+  //=================================================
   // Determines number of files potentially to add to database
    int WxGimmickView::NumberFilesToAdd(const std::string &dirpath, bool recursive)
   {
@@ -484,10 +487,9 @@ namespace creaImageIO
                }
          }
        return nb;
-
   }
 
-    //=================================================
+   //=================================================
    // Test a directory to know if contains sub-directory to analyze
   bool WxGimmickView::isNeedRecursive(std::string i_name)
   {
@@ -557,8 +559,6 @@ namespace creaImageIO
                  ClearSelection();
       }*/
        ReadImageThreaded(sel);
-
-    
    }
 
   //==================================================
@@ -676,7 +676,7 @@ namespace creaImageIO
        mViewer->RefreshIfNecessary();
        ResetExtent();
   }
-  
+
   //=================================================
  
   //=================================================
@@ -689,7 +689,7 @@ namespace creaImageIO
   }
   //=================================================
 
-  
+
   //=================================================
   void WxGimmickView::AddIgnoreFile(tree::Node* toRemove)
   {
@@ -764,6 +764,7 @@ namespace creaImageIO
     dial->SetSizer(siz);
     dial->ShowModal();
   }
+
   //=================================================
   void WxGimmickView::OnImportExport(wxCommandEvent &Event)
   {
@@ -857,7 +858,6 @@ namespace creaImageIO
                                        }       
                                }
                        }
-
                        else
                        {
                                wxMessageBox(_T("One or both of the directory fields are empty"),_T("Empty Fields"),wxOK,this);
@@ -866,9 +866,9 @@ namespace creaImageIO
        delete gimmickTools;
 #endif
        }
-
        mViewer->StartPlayer();
   }
+
   //=================================================
 
   void WxGimmickView::CreateSettingsDialog(wxNotebook* nb, wxDialog* dial)
@@ -1138,4 +1138,3 @@ namespace creaImageIO
 
 } // EO namespace creaImageIO
 
-
index 1325306da3eddd7468ff85e729d78ad1335496a0..b16fdd03f5f6c59bd6dc123fa6887dad61d43f9e 100644 (file)
@@ -34,7 +34,7 @@ namespace creaImageIO
     typedef int EventType;
     
     /// Ctor
-    WxGimmickView(boost::shared_ptr<Gimmick> 
+    WxGimmickView(boost::shared_ptr<Gimmick>, 
                  wxWindow *parent, 
                  const wxWindowID id,
                  const wxPoint& pos, const wxSize& size,
@@ -51,6 +51,7 @@ namespace creaImageIO
     /// Returns the selected Images so that they comply with the 
     /// given parameter(4D) (overloaded from GimmickView)
     void GetSelectedImages(std::vector<vtkImageData*>& s, int dim);
+    void GetSelectedImagesInVector(std::vector<vtkImageData*>& s, int dim);
 
     /// Returns the images indicated by the filenames in the vector 
     /// so that they comply with the given parameter(dim)
@@ -141,18 +142,25 @@ namespace creaImageIO
     boost::shared_ptr<Gimmick> mGimmick;
        
        Listener* mListener;
+
     /// Callback for adding files
     void OnAddFiles(wxCommandEvent& event);
+
     /// Callback for adding dir
     void OnAddDir(wxCommandEvent& event);
+
     /// Callback for removing files
     void OnRemove(wxCommandEvent& event);
+
        /// Callback for synchronization
     void OnSynchronize(wxCommandEvent& event);
+
        /// Callback for settings edition
     void OnSettings(wxCommandEvent& event);
+
        /// Callback for settings edition
     void OnTools(wxCommandEvent& event);
+
        /// Callback for Import/Export images
     void OnImportExport(wxCommandEvent& event);
 
@@ -192,29 +200,31 @@ namespace creaImageIO
  
     /// Progress dialog
     wxProgressDialog* mProgressDialog;
+
     ///The selection's maximum dimension
     int mSelectionMaxDimension;
+
     ///The selection's minimum dimension
     int mSelectionMinDimension;
+
     ///Image previewer
     WxViewer* mViewer;
+
     ///Currently Displayed Node
     tree::Node* mCurImageItemToShow;
+
     //Pointer holders for images to be shown
        std::vector< boost::shared_ptr<ImagePointerHolder> > pointers;
-    
-    
+
     wxString mCurrentDirectory;
     
     DECLARE_EVENT_TABLE()
       };
   // EO class WxGimmickView
   //=====================================================================
-  
+
 } // EO namespace creaImageIO
 
 #endif // USE_WIDGETS
 // EOF
-#endif  
+#endif
index e794fd498e8818f09613cd8fb917788c722f6876..3694fcf75e195cb1110c99a9ee370ba29bc7bfd7 100644 (file)
@@ -15,7 +15,7 @@ D 0x0008 0x0060 4
 D 0x0008 0x1030 3 
 D 0x0008 0x103E 3
 D 0x0008 0x0080 3
-D 0x0008 0x0081 3 
+#D 0x0008 0x0081 3 
 #D 0x0008 0x1010 3
 #D 0x0008 0x1048 3 
 #D 0x0008 0x1050 3