]> Creatis software - crea.git/blobdiff - lib/creaDevManagerLib/modelCDMLibrary.h
Feature #1711 CreaDevManager application implementation
[crea.git] / lib / creaDevManagerLib / modelCDMLibrary.h
index 64ae1f863265189cc2d34d462dc141431041d144..bec12783c504f0c602063b53a0eabe2f5f6e71a9 100644 (file)
 
 #include<iostream>
 #include<vector>
+#include<map>
 
-#include "modelCDMIProjectTreeNode.h"
+#include "modelCDMFolder.h"
 
-class modelCDMLibrary : public modelCDMIProjectTreeNode
+/**
+ * Class that represents a library in a Crea project.
+ */
+class modelCDMLibrary : public modelCDMFolder
 {
 public:
+  /**
+   * Default Constructor
+   */
   modelCDMLibrary();
+  /**
+   * Constructor of the Library node.
+   * @param parent Parent node of the library node.
+   * @param path Full path to the library node.
+   * @param name Name of the library folder node.
+   * @param level Project hierarchy level of the library folder node.
+   */
+  modelCDMLibrary(modelCDMIProjectTreeNode* parent, const std::string& path, const std::string& name, const int& level = 2);
+  /**
+   * Destructor.
+   */
   ~modelCDMLibrary();
 
-  const std::string& GetName() const;
+  /**
+   * Retrieves the name of the Library node. The name of a library can be different than the name of the folder that contains it
+   * @return Name of the library node.
+   */
+  const std::string& GetNameLibrary() const;
+  /**
+   * Renames the library with the given name.
+   * @param fileName New name of the library node.
+   * @param result Result message.
+   * @return True if the operation was successful.
+   */
+  bool SetNameLibrary(const std::string& fileName, std::string*& result);
+
+  /**
+   * Creates a new folder inside the library folder node. This method not only modifies the project model, but also the system.
+   * @param name Name of the new folder.
+   * @param result Result message.
+   * @return True if the operation was successful.
+   */
+  modelCDMFolder* CreateFolder(const std::string& name, std::string*& result);
+
+  /**
+   * Refreshes the structure of the library folder node. Deletes files and folders deleted since last refresh, adds files and folders created since last refresh.
+   * @param result Result message.
+   * @return True if the operation was successful.
+   */
+  virtual const bool Refresh(std::string*& result);
+
+  /**
+   * Checks the library structure and CMakeLists file to find project structure definition problems before compiling the project.
+   * @param properties Project properties.
+   */
+  void CheckStructure(std::map<std::string, bool>& properties);
+
+  /**
+   * Checks the library CMakeLists file to check which third party libraries are enabled.
+   * @return A map with the name of the library and if it's included in the CMakeLists file.
+   */
+  std::map<std::string, bool> Get3rdPartyLibraries();
+
+  /**
+   * Sets the 3rd party library inclusion in the CMakeLists file.
+   * @return if the operation was successful.
+   */
+  bool Set3rdPartyLibrary(const std::string& library_name, const bool& toInclude);
+
+  /**
+   * Checks the library CMakeLists file to check which custom libraries are enabled.
+   * @return A map with the name of the library and if it's included in the CMakeLists file.
+   */
+  std::map<std::string, bool> GetCustomLibraries();
 
-  bool CreateFolder(
-      const std::string& name,
-      std::string*& result,
-      const std::string& path = "/"
-  );
-  bool OpenCMakeListsFile(std::string*& result);
-  bool Refresh(std::string*& result);
+  /**
+   * Sets the custom library inclusion in the CMakeLists file.
+   * @return if the operation was successful.
+   */
+  bool SetCustomLibrary(const std::string& library_name, const bool& toInclude);
 
 private:
-  std::string name;
-  std::vector<modelCDMLibrary*> libraries;
+  /**
+   * Name of the library node. The name of a library can be different than the library folder name.
+   */
+  std::string nameLibrary;
+  /**
+   * Folder reference array of folder node inside the library node.
+   */
+  std::vector<modelCDMFolder*> folders;
 };
 
 #endif /* MODELCDMLIBRARY_H_ */