]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOGimmickView.cpp
Added validation on frame exit
[creaImageIO.git] / src2 / creaImageIOGimmickView.cpp
index 49297e9be755c074c127bafa89adf24931ddb479..ca9113c83c429aee0f13bcb13281efe1b8e97129 100644 (file)
@@ -1,6 +1,10 @@
 #include <creaImageIOGimmickView.h>
 #include <creaImageIOSystem.h>
 
+#include "boost/filesystem.hpp"
+
+namespace fs = boost::filesystem;
+
 namespace creaImageIO
 {
   //======================================================================
@@ -13,6 +17,7 @@ namespace creaImageIO
                        <<std::endl);
        // Start the threads ...
     mReader.Start();
+
   }
   //======================================================================
 
@@ -111,7 +116,7 @@ namespace creaImageIO
                }
 
                //Dimention validation
-               //Compatibility with maximum 
+               //Compatibility with maximum and minimum
                        if(valid)
                        {       
                                
@@ -180,6 +185,7 @@ namespace creaImageIO
        {
                mMessage="Selection OK !";
        }
+       mValidationSignal(valid);
        SetMessage(mMessage);
        return valid;
   }
@@ -263,6 +269,56 @@ namespace creaImageIO
       }
        
   }
+  //======================================================================
+
+  //======================================================================
+  ///Requests the reading of an image
+  void GimmickView::RequestReading(tree::Node* n, 
+                                  int prio, int selection_index)
+  {
+    ImageEventType t(n,0,selection_index);
+    mImageEventMap[n->GetAttribute("FullFileName")] = t;    
+    mReader.Request(this,n->GetAttribute("FullFileName"),prio);
+  }
+  //======================================================================
+
+  //======================================================================
+  void GimmickView::
+  OnMultiThreadImageReaderEvent(const std::string& filename,
+                               MultiThreadImageReaderUser::EventType e,
+                               vtkImageData* image)
+  {
+    GimmickDebugMessage(5,
+                       "MultiThreadImageReader event : "<<e<<std::endl);
+    if (filename.size()==0)
+      {
+       GimmickDebugMessage(5,
+                           "Pushing unknown image in queue"
+                           <<std::endl);
+       mImageEventQueue.push_back(ImageEventType(image));
+       return;
+      }
+    ImageEventTypeMap::iterator i;
+    i = mImageEventMap.find(filename);
+    if (i!=mImageEventMap.end())
+      {
+       GimmickDebugMessage(5,
+                           "Pushing image of file '"<<filename<<"' in queue"
+                           <<std::endl);
+       ImageEventType e(i->second);
+       e.image = image;
+       mImageEventQueue.push_back(e);
+       mImageEventMap.erase(i);
+      }
+  }
+
+  //====================================================================
+
+  //====================================================================
+  void GimmickView::ConnectValidationObserver(ValidationCallbackType callback)
+  {
+    mValidationSignal.connect(callback);
+  }
          
   
 } // EO namespace creaImageIO