# ---------------------------------------------------------------------
#
# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
-# pour la Santé)
+# pour la Sant�)
# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
# Previous Authors : Laurent Guigues, Jean-Pierre Roux
# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
# The fact that you are presently reading this means that you have had
# knowledge of the CeCILL-B license and that you accept its terms.
# ------------------------------------------------------------------------
-*/
-
-
+ */
/*
* modelCDMMain.cpp
*
* Created on: 13/11/2012
- * Author: daniel
+ * Author: Daniel Felipe Gonzalez Obando
*/
#include "modelCDMMain.h"
-#include <iostream>
+#include<iostream>
+#include<string>
+#include <cstdio>
+#include <fstream>
+
+#include "CDMUtilities.h"
modelCDMMain::modelCDMMain()
{
- this->project = NULL;
+ //TODO: implement method
}
+
modelCDMMain::~modelCDMMain()
{
- if (this->project != NULL)
- delete this->project;
+ //TODO: implement method
}
-modelCDMProject* modelCDMMain::GetProject()
+const modelCDMProject* modelCDMMain::GetProject() const
{
+ //TODO: implement method
return this->project;
}
-void modelCDMMain::SetProject(modelCDMProject* project)
+
+bool modelCDMMain::CreateProject(
+ const std::string& name,
+ const std::string& location,
+ std::string*& result,
+ const std::string& author,
+ const std::string& description)
{
- if(this->project != NULL && this->project != project)
- delete this->project;
- this->project = project;
+ //TODO: implement method
+ return true;
}
+bool modelCDMMain::OpenProject(
+ const std::string& path,
+ std::string*& result
+)
+{
+ std::cout << "Selection path: "<< path << std::endl;
+
+ //get fixed path
+ std::string pathFixed = CDMUtilities::fixPath(path);
+ std::cout << "Fixed selection path: "<< pathFixed << std::endl;
+
+ //check if its binaries' folder
+ bool isBinary = false;
+ std::string pathBuild = "";
+
+ //check if Makefile file exists
+ std::string pathMakefile = pathFixed + "/Makefile";
+ FILE* pFile = fopen(pathMakefile.c_str(), "r");
+
+ //is the binary folder
+ if (pFile != NULL)
+ {
+ fclose(pFile);
+ std::ifstream readFile;
+ readFile.open(pathMakefile.c_str());
+ std::string word;
+
+ while(!isBinary && readFile >> word)
+ {
+ //cout << word << endl;
+ if(word == "CMAKE_SOURCE_DIR")
+ {
+ readFile >> word;
+ readFile.ignore();
+ getline(readFile, word, '\n');
+ pathBuild = pathFixed;
+ pathFixed = word;
+ isBinary = true;
+ }
+ }
+ readFile.close();
+ }
+
+ //check if its source's folder
+ bool isSource = false;
+ std::string pathSource = "";
+ //check if CMakeLists file exists
+ std::string pathCMakeLists = pathFixed + "/CMakeLists.txt";
+ pFile = fopen(pathCMakeLists.c_str(), "r");
+
+ //is the source folder
+ if (pFile != NULL)
+ {
+ fclose(pFile);
+ std::ifstream readFile;
+ readFile.open(pathCMakeLists.c_str());
+ std::string word;
+
+
+ while(!isSource && !readFile.eof())
+ {
+ std::getline(readFile,word,'\n');
+ int pos = word.find("PROJECT");
+ if(pos != std::string::npos)
+ {
+ pathSource = pathFixed;
+ isSource = true;
+ }
+ }
+ readFile.close();
+ }
+
+ //if is source folder
+ if(isSource)
+ {
+ std::cout << "Project sources at: " << pathSource;
+ if(isBinary)
+ {
+ std::cout << ", and built in: " << pathBuild;
+ }
+ std::cout << std::endl;
+ }
+ else
+ {
+ result = new std::string("No source folder found. Please make sure to select either the project's build or source folder.");
+ return false;
+ }
+
+ //TODO: create Project given the source folder
+ return true;
+}
+
+bool modelCDMMain::RefreshProject(
+ std::string*& result
+)
+{
+ //TODO: recreate the project using the project's path
+ return true;
+}
+
+bool modelCDMMain::CloseProject(
+ std::string*& result
+)
+{
+ //TODO: delete the project tree and leave it as NULL
+ return true;
+}