X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcreaDevManagerLib%2FCDMUtilities.h;h=e245450c831aaed17ad39616d0ffdab7881b8e4e;hb=38fb78e3930c8ba01021536630624e4b0b03dd87;hp=2b4f05bfcea9a505864c7969d26ea3964a9cf5df;hpb=b10bc326c058168a64969db6c6a29b91a3136fb3;p=crea.git diff --git a/lib/creaDevManagerLib/CDMUtilities.h b/lib/creaDevManagerLib/CDMUtilities.h index 2b4f05b..e245450 100644 --- a/lib/creaDevManagerLib/CDMUtilities.h +++ b/lib/creaDevManagerLib/CDMUtilities.h @@ -36,24 +36,195 @@ #define CDMUTILITIES_H_ #include +#include #include namespace CDMUtilities { + /** + * Path slash + */ +#ifdef _WIN32 + // ------ Windows + static std::string SLASH = "\\"; +#elif __APPLE__ + // ------ Apple + static std::string SLASH = "/"; +#else + static std::string SLASH = "/"; +#endif + + /** + * Text editor program + */ +#ifdef _WIN32 + // ------ Windows + static std::string TEXT_EDITOR = "notepad"; +#elif __APPLE__ + // ------ Apple + //TODO: implementation for apple +#else + static std::string TEXT_EDITOR = "gedit"; +#endif + + /** + * File explorer program + */ +#ifdef _WIN32 + // ------ Windows + static std::string FILE_EXPLORER = "explorer"; +#elif __APPLE__ + // ------ Apple + //TODO: implementation for apple +#else + static std::string FILE_EXPLORER = "nautilus"; +#endif + + /** + * Terminal program + */ +#ifdef _WIN32 + // ------ Windows + static std::string TERMINAL = "start cmd.exe"; +#elif __APPLE__ + // ------ Apple + //TODO: implementation for apple +#else + static std::string TERMINAL = "gnome-terminal"; +#endif + + /** + * Structure that handles the split method for c++ + * It calls the split method to split a string given certain delimiters. + */ struct splitter { + /** + * Enum to allow or not empty resulting strings after performing splits. + */ enum empties_t { empties_ok, no_empties }; + /** + * Method to split a string given a set of delimiter characters. + * @param result Resulting container. + * @param s String to be splitted. + * @param delimiters Delimiter characters to split the string. + * @param empties Either allow or not empty resulting strings after performing split. + * @return Resulting container. + */ template - static Container& split - ( - Container& result, - const typename Container::value_type& s, - const typename Container::value_type& delimiters, - empties_t empties = empties_ok - ); + static Container& split + ( + Container& result, + const typename Container::value_type& s, + const typename Container::value_type& delimiters, + empties_t empties = empties_ok + ); }; + /** + * Fixes a given path to avoid double slash directories + * @param path Unfixed path. + * @return Fixed path. + */ const std::string fixPath(const std::string& path); + + /** + * Opens the default text editor. If a file is given, then it tries to open the given file. + * @param file Full path to the file. + * @return True if there was an error on the execution of the operation. + */ + int openTextEditor(const std::string& file = ""); + /** + * Opens the system file explorer on the given file path + * @param file Path of the desired folder to open. + * @return True if there was an error on the execution of the operation. + */ + int openFileExplorer(const std::string& file = ""); + /** + * Opens a file with a given command. + * @param file Full path of the file to open. + * @param command Command to execute the file with. + * @return True if there was an error on the execution of the operation. + */ + int openFileWithCommand(const std::string& file, const std::string& command); + /** + * Opens the BBTK Graphical Editor + * @return True if there was an error on the execution of the operation. + */ + int openBBEditor(); + /** + * Opens the minitools or the creaTools + * @return True if there was an error on the execution of the operation. + */ + int openCreaToolsTools(); + /** + * Open a command line interpreter and executes the given command if any. + * @param command Command to execute. + * @return True if there was an error on the execution of the operation. + */ + int openTerminal(const std::string& command = ""); + /** + * Creates a blank class(.h and .cpp files). + * @param name Name of the new class. + * @param path Path where the class is to be created. + * @return True if the class was successfully created. + */ + bool createEmptyClass(const std::string& name, const std::string& path); + /** + * Creates a string replacing each \ by double \ . + * @param line String to stringify. + * @return line stringified. + */ + std::string stringify(const std::string& line); + + //CMakeLists file handling + /** + * Type definition for the value of a syntax element for CMakeLists files + */ + typedef std::vector cmdValue; + + /** + * Type definition for the type of a syntax element for CMakeLists files + */ + typedef std::string cmdType; + + /** + * Type definition for syntax elements of a CMakeLists file + */ + typedef std::pair syntaxElement; + + /** + * Type definition for describing a CMakeLists file content + */ + typedef std::vector CMLFile; + + /** + * Reads a file as string and returns the read data. + * @param file_path Full path of the CMakeLists file. + * @return A string with the contents of the given file. + */ + std::string readFile(const std::string& file_path); + + /** + * Reads a CMakeLists file and returns the read data. + * @param file_path Full path of the CMakeLists file. + * @return A CMLFile with the contents of the given file. + */ + CMLFile readCMLFile(const std::string& file_path); + + /** + * Writes the given data into specified CMakeLists file. + * @param file_path Full path of the CMakeLists file. + * @param data CMakeLists data. + * @return True if the operation was successful. + */ + bool writeCMLFile(const std::string& file_path, const CMLFile& data); + + /** + * @param st Strips all space character at the beginning and at the end of the string. + */ + void normalizeStr(std::string& st); + }; #endif /* CDMUTILITIES_H_ */