]> Creatis software - crea.git/blobdiff - lib/creaDevManagerLib/modelCDMPackage.cpp
Feature #1711 CreaDevManager application implementation
[crea.git] / lib / creaDevManagerLib / modelCDMPackage.cpp
index 43d169abb13bfbbefb5b209424cc84f268447959..81fb90610b5ac2b5e23877905ac06d17e61c51e6 100644 (file)
@@ -692,8 +692,64 @@ void modelCDMPackage::CheckStructure(std::map<std::string, bool>& properties)
 
 std::map<std::string, bool> modelCDMPackage::Get3rdPartyLibraries()
 {
+  std::map<std::string, std::string> correspondence;
+  correspondence["${BBTK_PACKAGE_NAME}_USE_VTKON"] = "VTK";
+  correspondence["${BBTK_PACKAGE_NAME}_USE_ITKON"] = "ITK";
+  correspondence["${BBTK_PACKAGE_NAME}_USE_GDCMON"] = "GDCM";
+  correspondence["${BBTK_PACKAGE_NAME}_USE_GDCM_VTKON"] = "GDCM_VTK";
+  correspondence["${BBTK_PACKAGE_NAME}_USE_GSMISON"] = "GSMIS";
+  correspondence["${BBTK_PACKAGE_NAME}_USE_WXWIDGETSON"] = "WxWidgets";
+  correspondence["${BBTK_PACKAGE_NAME}_USE_KWWIDGETSON"] = "KWWidgets";
   std::map<std::string, bool> res;
-  res["Test"] = false;
+  res["VTK"] = false;
+  res["ITK"] = false;
+  res["GDCM"] = false;
+  res["GDCM_VTK"] = false;
+  res["GSMIS"] = false;
+  res["WxWidgets"] = false;
+  res["KWWidgets"] = false;
+
+  if(this->HasCMakeLists())
+    {
+      std::ifstream CMFile(this->CMakeLists->GetPath().c_str());
+      if (CMFile.is_open())
+        {
+          std::string line;
+          while(!CMFile.eof())
+            {
+              std::getline(CMFile, line, '(');
+
+              std::vector<std::string> lineSeg;
+              CDMUtilities::splitter::split(lineSeg,line,"\n",CDMUtilities::splitter::no_empties);
+              for(int i = 0; lineSeg.size() > 0 && i < lineSeg[lineSeg.size()-1].size(); ++i)
+                if (lineSeg[lineSeg.size()-1][i] == ' ')
+                  {
+                    lineSeg[lineSeg.size()-1].erase(i,1);
+                    --i;
+                  }
+              if(lineSeg.size() > 0 && lineSeg[lineSeg.size()-1][0]!='#' && lineSeg[lineSeg.size()-1] == "SET")
+                {
+                  std::getline(CMFile, line, ')');
+                  CDMUtilities::splitter::split(lineSeg,line,"\t\n",CDMUtilities::splitter::no_empties);
+                  if(lineSeg.size() > 0)
+                    {
+                      for(int i = 0; i < lineSeg[0].size(); ++i)
+                        if (lineSeg[0][i] == ' ')
+                          {
+                            lineSeg[0].erase(i,1);
+                            --i;
+                          }
+
+                      if(lineSeg[0].size() > 0 && lineSeg[0][0] == '$' && correspondence.find(lineSeg[0]) != correspondence.end())
+                        {
+                          res[correspondence[lineSeg[0]]] = true;
+                        }
+                    }
+                }
+            }
+          CMFile.close();
+        }
+    }
   return res;
 }