2 # ---------------------------------------------------------------------
4 # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
6 # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
7 # Previous Authors : Laurent Guigues, Jean-Pierre Roux
8 # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
10 # This software is governed by the CeCILL-B license under French law and
11 # abiding by the rules of distribution of free software. You can use,
12 # modify and/ or redistribute the software under the terms of the CeCILL-B
13 # license as circulated by CEA, CNRS and INRIA at the following URL
14 # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
15 # or in the file LICENSE.txt.
17 # As a counterpart to the access to the source code and rights to copy,
18 # modify and redistribute granted by the license, users are provided only
19 # with a limited warranty and the software's author, the holder of the
20 # economic rights, and the successive licensors have only limited
23 # The fact that you are presently reading this means that you have had
24 # knowledge of the CeCILL-B license and that you accept its terms.
25 # ------------------------------------------------------------------------
31 * Created on: Nov 23, 2012
32 * Author: Daniel Felipe Gonzalez Obando
35 #ifndef CDMUTILITIES_H_
36 #define CDMUTILITIES_H_
42 namespace CDMUtilities
49 static std::string SLASH = "\\";
52 static std::string SLASH = "/";
54 static std::string SLASH = "/";
62 static std::string TEXT_EDITOR = "notepad";
65 //TODO: implementation for apple
66 static std::string TEXT_EDITOR = "open -e";
68 static std::string TEXT_EDITOR = "gedit";
72 * File explorer program
76 static std::string FILE_EXPLORER = "explorer";
79 //TODO: implementation for apple
80 static std::string FILE_EXPLORER = "open ";
82 static std::string FILE_EXPLORER = "nautilus";
90 static std::string TERMINAL = "start cmd.exe";
93 //TODO: implementation for apple
94 static std::string TERMINAL = "open -a Terminal ";
96 static std::string TERMINAL = "gnome-terminal";
105 static std::string BUILD_COMMAND = "make";
109 * Structure that handles the split method for c++
110 * It calls the split method to split a string given certain delimiters.
115 * Enum to allow or not empty resulting strings after performing splits.
117 enum empties_t { empties_ok, no_empties };
119 * Method to split a string given a set of delimiter characters.
120 * @param result Resulting container.
121 * @param s String to be splitted.
122 * @param delimiters Delimiter characters to split the string.
123 * @param empties Either allow or not empty resulting strings after performing split.
124 * @return Resulting container.
126 template <typename Container>
127 static Container& split
130 const typename Container::value_type& s,
131 const typename Container::value_type& delimiters,
132 empties_t empties = empties_ok
140 if (empties == no_empties)
142 next = s.find_first_not_of(delimiters, next + 1);
143 if (next == Container::value_type::npos)
150 next = s.find_first_of(delimiters, current);
151 result.push_back(s.substr(current, next - current));
153 while (next != Container::value_type::npos);
159 * Fixes a given path to avoid double slash directories
160 * @param path Unfixed path.
161 * @return Fixed path.
163 const std::string fixPath(const std::string& path);
166 * Opens the default text editor. If a file is given, then it tries to open the given file.
167 * @param file Full path to the file.
168 * @return True if there was an error on the execution of the operation.
170 int openTextEditor(const std::string& file = "");
172 * Opens the system file explorer on the given file path
173 * @param file Path of the desired folder to open.
174 * @return True if there was an error on the execution of the operation.
176 int openFileExplorer(const std::string& file = "");
178 * Opens a file with a given command.
179 * @param file Full path of the file to open.
180 * @param command Command to execute the file with.
181 * @param parameters Parameters to open file.
182 * @return True if there was an error on the execution of the operation.
184 int openFileWithCommand(const std::string& file, const std::string& command, const std::string& parameters = "");
186 * Opens the BBTK Graphical Editor
187 * @return True if there was an error on the execution of the operation.
191 * Opens the minitools or the creaTools
192 * @return True if there was an error on the execution of the operation.
194 int openCreaToolsTools();
196 * Open a command line interpreter and executes the given command if any.
197 * @param command Command to execute.
198 * @return True if there was an error on the execution of the operation.
200 int openTerminal(const std::string& command = "");
202 * Creates a blank class(.h and .cpp files).
203 * @param name Name of the new class.
204 * @param path Path where the class is to be created.
205 * @return True if the class was successfully created.
207 bool createEmptyClass(const std::string& name, const std::string& path);
209 * Creates a string replacing each \ by double \ .
210 * @param line String to stringify.
211 * @return line stringified.
213 std::string stringify(const std::string& line);
215 //CMakeLists file handling
217 * Type definition for the value of a syntax element for CMakeLists files
219 typedef std::vector<std::string> cmdValue;
222 * Type definition for the type of a syntax element for CMakeLists files
224 typedef std::string cmdType;
227 * Type definition for syntax elements of a CMakeLists file
229 typedef std::pair<cmdType,cmdValue> syntaxElement;
232 * Type definition for describing a CMakeLists file content
234 typedef std::vector<syntaxElement> CMLFile;
237 * Reads a file as string and returns the read data.
238 * @param file_path Full path of the CMakeLists file.
239 * @return A string with the contents of the given file.
241 std::string readFile(const std::string& file_path);
243 * Writes the given string into a file and returns whether the operation is successful.
244 * @param file_path Full path of the CMakeLists file.
245 * @param st string to write.
246 * @return True if the operation was successful.
248 bool writeFile(const std::string& file_path, const std::string& st);
251 * Reads a CMakeLists file and returns the read data.
252 * @param file_path Full path of the CMakeLists file.
253 * @return A CMLFile with the contents of the given file.
255 CMLFile readCMLFile(const std::string& file_path);
258 * Writes the given data into specified CMakeLists file.
259 * @param file_path Full path of the CMakeLists file.
260 * @param data CMakeLists data.
261 * @return True if the operation was successful.
263 bool writeCMLFile(const std::string& file_path, const CMLFile& data);
266 * @param st Strips all space character at the beginning and at the end of the string.
268 void normalizeStr(std::string& st);
272 #endif /* CDMUTILITIES_H_ */