]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOGimmickView.cpp
No newline at end of file
[creaImageIO.git] / src2 / creaImageIOGimmickView.cpp
index 16ad8ff9ae8926e23b522ab9ad520810ce983808..945b091ce3552ddc80bb3d4d3dc945926d7bd163 100644 (file)
@@ -87,6 +87,7 @@ namespace creaImageIO
   void GimmickView::Initialize()
   {
        mImageExtent=0;
+       mReaderStarted=false;
   }
   //======================================================================
   
@@ -111,6 +112,15 @@ namespace creaImageIO
        this->CreateTreeView(i->second);
       }
   }
+
+  /// Create a tree view with a given name
+  void GimmickView::CreateSingleTreeView(std::string &i_name)
+  {
+               this->CreateTreeView(mGimmick->GetTreeHandlerMap()[i_name]);
+     
+  }
+
+
   //======================================================================
 
   //======================================================================
@@ -161,7 +171,10 @@ namespace creaImageIO
   {
          ImageExtent * extent= (ImageExtent*)&ie;
          mExtent[2]+=(*extent).Get(2);
+         if(mExtent[2]>1)
+         {
          SetDimension(3);
+         }
   }
 
   //======================================================================
@@ -246,16 +259,21 @@ namespace creaImageIO
        }
 
        
-       mValidationSignal(valid);
+       modifyValidationSignal(valid);
        SetMessage(mMessage);
        return valid;
   }
 
-//======================================================================
+  //======================================================================
+  void GimmickView::modifyValidationSignal(bool ivalid)
+  {
+         mValidationSignal(ivalid);
+  }
+
 
    //======================================================================
   ///Reads Images (Non Threaded)
-  void GimmickView::ReadImagesNotThreaded(std::vector<vtkImageData*>& s,std::vector<tree::Node*> im, int dimension)
+  void GimmickView::ReadImagesNotThreaded(std::vector<vtkImageData*>& s,std::vector<std::string> im, int dimension)
   {
          
        // Create the output data
@@ -264,16 +282,16 @@ namespace creaImageIO
                  
                // Only one image : give it
                vtkImageData* out = vtkImageData::New();
-               GimmickMessage(1, "State Check: Full Filename: "
-                                               <<im.front()->GetAttribute("FullFileName")
+               GimmickDebugMessage(3, "State Check: Full Filename: "
+                                               <<im.front()
                                                <<std::endl);
-               out->ShallowCopy(mReader.GetImage(im.front()->GetAttribute("FullFileName")));
+               out->ShallowCopy(mReader.GetImage(im.front()));
                s.push_back( out );
       }
          
     else if (im.size()>1)
       {
-       vtkImageData* first = mReader.GetImage( im.front()->GetAttribute("FullFileName"));
+       vtkImageData* first = mReader.GetImage( im.front());
        if (dimension==2) 
          {     
            // n2D to 3D
@@ -299,11 +317,11 @@ namespace creaImageIO
              *dim[1];
 
            int slice = 0;
-               std::vector<tree::Node*>::iterator it;
-           for (it=im.begin(); it!=im.end(); ++it) 
+               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)->GetAttribute("FullFileName"));
+                         vtkImageData* cur = mReader.GetImage( (*it));
                
                void* src = cur->GetScalarPointer(0,0,0);
                void* dst = out->GetScalarPointer(0,0,slice);
@@ -319,11 +337,11 @@ namespace creaImageIO
        else 
          {
            // n3D
-                 std::vector<tree::Node*>::iterator it;
+                 std::vector<std::string>::iterator it;
            for (it=im.begin(); it!=im.end(); ++it) 
              {
                vtkImageData* out = vtkImageData::New();
-               out->ShallowCopy(mReader.GetImage((*it)->GetAttribute("FullFileName")));
+               out->ShallowCopy(mReader.GetImage(*it));
                s.push_back(out);
              }
          }
@@ -337,7 +355,11 @@ namespace creaImageIO
   void GimmickView::RequestReading(tree::Node* n, 
                                   int prio, int selection_index, ImagePointerHolder *p)
   {
-       mReader.Start();
+         if(!mReaderStarted)
+         {
+               mReader.Start();
+               mReaderStarted=true;
+         }
     ImageEventType t(n,selection_index, p);
     mImageEventMap[n->GetAttribute("FullFileName")] = t;    
     mReader.Request(this,n->GetAttribute("FullFileName"),prio);