]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOGimmickView.cpp
*** empty log message ***
[creaImageIO.git] / src2 / creaImageIOGimmickView.cpp
index 6084c7d7ff3d097ba932bbdbc78803fdbc6860fb..a1c29cea8c6fc223e86d69bb716c5b9f70a2cc1a 100644 (file)
@@ -1,6 +1,10 @@
 #include <creaImageIOGimmickView.h>
 #include <creaImageIOSystem.h>
 
+#include "boost/filesystem.hpp"
+
+namespace fs = boost::filesystem;
+
 namespace creaImageIO
 {
   //======================================================================
@@ -181,6 +185,7 @@ namespace creaImageIO
        {
                mMessage="Selection OK !";
        }
+       mValidationSignal(valid);
        SetMessage(mMessage);
        return valid;
   }
@@ -264,8 +269,17 @@ 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);
+  }
   //======================================================================
 
   //======================================================================
@@ -274,17 +288,54 @@ namespace creaImageIO
                                MultiThreadImageReaderUser::EventType e,
                                vtkImageData* image)
   {
+    GimmickDebugMessage(7,
+                       "MultiThreadImageReader event : "<<e<<std::endl);
+       if (e==ImageLoaded)
+       {
     if (filename.size()==0)
       {
+       GimmickDebugMessage(5,
+                           "Pushing unknown image in queue"
+                           <<std::endl);
        mImageEventQueue.push_back(ImageEventType(image));
        return;
       }
-         std::map<std::string,tree::Node*>::iterator i;
-    i = mImageFileNameToNode.find(filename);
-    if (i!=mImageFileNameToNode.end())
+    ImageEventTypeMap::iterator i;
+    i = mImageEventMap.find(filename);
+    if (i!=mImageEventMap.end())
       {
-               mImageEventQueue.push_back(ImageEventType(i->second,image));
+       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);
       }
+       }
+       else if (e==Error)
+       {
+               std::string mess="ERROR: MultiThreadImageReader: Cannot read image in file ";
+               mess+=filename;
+               mess+="\n";
+               GimmickMessage(1,mess);
+       }
+
+       else if (e==ImageUnloaded)
+       {
+               std::string mess="Unloaded image in file ";
+               mess+=filename;
+               mess+="\n";
+               GimmickMessage(1,mess);
+       }
+  }
+
+  //====================================================================
+
+  //====================================================================
+  void GimmickView::ConnectValidationObserver(ValidationCallbackType callback)
+  {
+    mValidationSignal.connect(callback);
   }