#define ID_BUTTON_SET_BUILD_PATH 10319
#define ID_BUTTON_SET_AUTHOR 10320
#define ID_BUTTON_SET_DESCRIPTION 10321
+#define ID_BUTTON_SET_NAME 10322
-#define ID_BUTTON_BUILD_PROJECT 10322
-#define ID_BUTTON_CONFIGURE_BUILD 10323
-#define ID_BUTTON_CONNECT_PROJECT 10324
+#define ID_BUTTON_BUILD_PROJECT 10323
+#define ID_BUTTON_CONFIGURE_BUILD 10324
+#define ID_BUTTON_CONNECT_PROJECT 10325
-#define ID_BUTTON_GOTO_PACKAGE_MANAGER 10325
-#define ID_BUTTON_GOTO_APPLI_MANAGER 10326
-#define ID_BUTTON_GOTO_LIB_MANAGER 10327
+#define ID_BUTTON_GOTO_PACKAGE_MANAGER 10326
+#define ID_BUTTON_GOTO_APPLI_MANAGER 10327
+#define ID_BUTTON_GOTO_LIB_MANAGER 10328
-#define ID_LINK_SELECT_PACKAGE 10328
-#define ID_LINK_SELECT_LIBRARY 10329
-#define ID_LINK_SELECT_APPLICATION 10330
-#define ID_LINK_SELECT_BLACKBOX 10331
+#define ID_LINK_SELECT_PACKAGE 10329
+#define ID_LINK_SELECT_LIBRARY 10330
+#define ID_LINK_SELECT_APPLICATION 10331
+#define ID_LINK_SELECT_BLACKBOX 10332
#endif /* CREADEVMANAGERIDS_H_ */
#include <iostream>
#include <fstream>
+#include <algorithm>
#include "CDMUtilities.h"
#include "creaWx.h"
const bool modelCDMAppli::Refresh(std::string*& result)
{
- //TODO: implement method
+ std::cout << "refreshing appli" << std::endl;
+ this->type = wxDIR_DIRS;
+ this->name = "appli";
+ this->level = level;
+ this->path = path;
+
+
+
+ std::vector<bool> checked(this->children.size(), false);
+ std::vector<bool> checkedApplications(this->applications.size(), false);
+
+ //check all folders
+ wxDir dir(crea::std2wx((this->path).c_str()));
+ if (dir.IsOpened())
+ {
+ wxString fileName;
+ bool cont = dir.GetFirst(&fileName, wxEmptyString, wxDIR_DIRS);
+ while (cont)
+ {
+ std::string stdfileName = crea::wx2std(fileName);
+ std::string applicationName = stdfileName;
+ //check if they already exist
+ bool found = false;
+ for (int i = 0;!found && i < this->applications.size(); i++)
+ {
+ if (this->applications[i]->GetName() == applicationName)
+ {
+ found = true;
+ int pos = std::find(this->children.begin(), this->children.end(), this->applications[i]) - this->children.begin();
+ checked[pos] = true;
+ checkedApplications[i] = true;
+ if(!this->applications[i]->Refresh(result))
+ return false;
+ }
+ }
+ if(!found)
+ {
+ modelCDMApplication* application= new modelCDMApplication(this->path + "/" + stdfileName, this->level + 1);
+ this->applications.push_back(application);
+ this->children.push_back(application);
+ }
+ cont = dir.GetNext(&fileName);
+ }
+
+ cont = dir.GetFirst(&fileName, wxEmptyString, wxDIR_FILES);
+ while (cont)
+ {
+ std::string stdfileName = crea::wx2std(fileName);
+
+ //if CMakeLists, create CMakeLists
+ if(stdfileName == "CMakeLists.txt")
+ {
+ if (this->CMakeLists == NULL)
+ {
+ this->CMakeLists = new modelCDMCMakeListsFile(this->path + "/" + stdfileName, this->level + 1);
+ this->children.push_back(this->CMakeLists);
+ }
+ else
+ {
+ int pos = std::find(this->children.begin(), this->children.end(), this->CMakeLists) - this->children.begin();
+ checked[pos] = true;
+ if(!this->CMakeLists->Refresh(result))
+ return false;
+ }
+ }
+ //if is an unknown file, create file
+ else
+ {
+ bool found = false;
+ for (int i = 0; i <!found && this->children.size(); i++)
+ {
+ if (this->children[i]->GetName() == stdfileName)
+ {
+ found = true;
+ checked[i] = true;
+ if(!this->children[i]->Refresh(result))
+ return false;
+ }
+ }
+
+ if(!found)
+ {
+ modelCDMFile* file = new modelCDMFile(this->path + "/" + stdfileName, this->level + 1);
+ this->children.push_back(file);
+ }
+ }
+
+ cont = dir.GetNext(&fileName);
+ }
+ }
+
+ for (int i = 0; i < checkedApplications.size(); i++)
+ {
+ if(!checkedApplications[i])
+ {
+ this->applications.erase(this->applications.begin()+i);
+ checkedApplications.erase(checkedApplications.begin()+i);
+ i--;
+ }
+ }
+ for (int i = 0; i < checked.size(); i++)
+ {
+ if(!checked[i])
+ {
+ delete this->children[i];
+ this->children.erase(this->children.begin()+i);
+ checked.erase(checked.begin()+i);
+ i--;
+ }
+ }
+ this->SortChildren();
return true;
}
#include "modelCDMApplication.h"
+#include <fstream>
+#include <algorithm>
+
#include "CDMUtilities.h"
#include "creaWx.h"
#include "wx/dir.h"
modelCDMApplication::modelCDMApplication(const std::string& path, const int& level)
{
+ //folder name
std::vector<std::string> words;
std::string delimiters;
//TODO::fix for windows
delimiters = "/";
CDMUtilities::splitter::split(words, path, delimiters, CDMUtilities::splitter::no_empties);
- this->name = this->nameApplication = words[words.size()-1];
+ this->name = words[words.size()-1];
- this->path = path;
+ //path
+ this->path = CDMUtilities::fixPath(path);
+ //type
this->type = wxDIR_DIRS;
+ //level
this->level = level;
- //TODO: open CMakeList
- //TODO: get ApplicationName
+ //open CMakeList
+ std::string pathMakeLists = path + "/CMakeLists.txt";
+
+ std::ifstream confFile;
+ confFile.open((pathMakeLists).c_str());
+
+ std::string word;
+ while(confFile.is_open() && !confFile.eof())
+ {
+ //get sets
+ std::getline(confFile,word,'(');
+ std::vector<std::string> wordBits;
+ CDMUtilities::splitter::split(wordBits,word," (\n",CDMUtilities::splitter::no_empties);
+
+ if(wordBits[wordBits.size()-1] == "SET")
+ {
+ //get library name
+ std::getline(confFile,word,')');
+ CDMUtilities::splitter::split(wordBits, word, " ", CDMUtilities::splitter::no_empties);
+ if(wordBits[0] == "EXE_NAME")
+ {
+ word = wordBits[1];
+ for (int i = 2; i < wordBits.size(); i++)
+ {
+ word += " " + wordBits[i];
+ }
+
+ this->nameApplication = this->executableName = word;
+ }
+ }
+ }
+ confFile.close();
+
+ //add library contents
+
+ this->children.clear();
+ wxDir dir(crea::std2wx((this->path).c_str()));
+ if (dir.IsOpened())
+ {
+ wxString fileName;
+ //folders
+ bool cont = dir.GetFirst(&fileName, wxEmptyString, wxDIR_DIRS);
+ while (cont)
+ {
+ std::string stdfileName = crea::wx2std(fileName);
+
+ modelCDMFolder* folder = new modelCDMFolder(this->path + "/" + stdfileName, this->level + 1);
+ this->folders.push_back(folder);
+ this->children.push_back(folder);
+
+ cont = dir.GetNext(&fileName);
+ }
+ //files
+ cont = dir.GetFirst(&fileName, wxEmptyString, wxDIR_FILES);
+ while (cont)
+ {
+ std::string stdfileName = crea::wx2std(fileName);
+
+ //if CMakeLists, create CMakeLists
+ if(stdfileName == "CMakeLists.txt")
+ {
+ this->CMakeLists = new modelCDMCMakeListsFile(this->path + "/" + stdfileName, this->level + 1);
+ this->children.push_back(this->CMakeLists);
+ }
+ //if is an unknown file, create file
+ else
+ {
+ this->children.push_back(new modelCDMFile(this->path + "/" + stdfileName, this->level + 1));
+ }
+
+ cont = dir.GetNext(&fileName);
+ }
+ }
+ this->SortChildren();
}
modelCDMApplication::~modelCDMApplication()
return this->executableName;
}
-void modelCDMApplication::SetMainFile(const std::string& fileName)
+bool modelCDMApplication::SetExecutableName(const std::string& fileName, std::string*& result)
{
+ std::vector<std::string> words;
+ CDMUtilities::splitter::split(words, fileName, ", /\\\"", CDMUtilities::splitter::no_empties);
+ std::string fileNameReal = words[0];
+ for (int i = 1; i < words.size(); i++)
+ {
+ fileNameReal += "-" + words[i];
+ }
+
+ std::string line;
+ //opening original cmakelists
+ std::ifstream in((this->path + "/CMakeLists.txt").c_str());
+ if( !in.is_open())
+ {
+ result = new std::string("CMakeLists.txt file failed to open.");
+ return false;
+ }
+ //opening temporal cmakelists
+ std::ofstream out((this->path + "/CMakeLists.txt.tmp").c_str());
+ if( !out.is_open())
+ {
+ result = new std::string("CMakeLists.txt.tmp file failed to open.");
+ return false;
+ }
+ //copying contents from original to temporal and making changes
+ while (getline(in, line))
+ {
+ if(line.find("SET ( EXE_NAME") != std::string::npos)
+ line = "SET ( EXE_NAME " + fileNameReal + " )";
+ out << line << std::endl;
+ }
+ in.close();
+ out.close();
+ //delete old file and rename new file
+ std::string renameCommand = "mv " + this->path + "/CMakeLists.txt.tmp " + this->path + "/CMakeLists.txt";
+ if(system(renameCommand.c_str()))
+ {
+ result = new std::string("An error occurred while running '" + renameCommand + "'.");
+ return false;
+ }
+
+ this->executableName = this->nameApplication = fileNameReal;
+ return true;
}
-bool modelCDMApplication::CreateFolder(
- const std::string& name,
- std::string*& result,
- const std::string& path
-)
+modelCDMFolder* modelCDMApplication::CreateFolder(const std::string& name, std::string*& result)
{
- //TODO: implement method
- return true;
+ //TODO:: mkdir depending on OS
+ std::string command = "mkdir " + path + "/" + name;
+ if(system(command.c_str()))
+ {
+ result = new std::string("Error executing: " + command + ".");
+ return NULL;
+ }
+ modelCDMFolder* folder = new modelCDMFolder(path + "/" + name, level + 1);
+ this->folders.push_back(folder);
+ this->children.push_back(folder);
+
+ return folder;
}
const bool modelCDMApplication::Refresh(std::string*& result)
{
- //TODO: implement method
+ //set attributes
+ this->type = wxDIR_DIRS;
+
+ //open CMakeList
+ std::string pathMakeLists = path + "/CMakeLists.txt";
+
+ std::ifstream confFile;
+ confFile.open((pathMakeLists).c_str());
+
+ std::string word;
+ while(confFile.is_open() && !confFile.eof())
+ {
+ //get sets
+ std::getline(confFile,word,'(');
+ std::vector<std::string> wordBits;
+ CDMUtilities::splitter::split(wordBits,word," (\n",CDMUtilities::splitter::no_empties);
+
+ if(wordBits[wordBits.size()-1] == "SET")
+ {
+ //get library name
+ std::getline(confFile,word,')');
+ CDMUtilities::splitter::split(wordBits, word, " ", CDMUtilities::splitter::no_empties);
+ if(wordBits[0] == "LIBRARY_NAME")
+ {
+ word = wordBits[1];
+ for (int i = 2; i < wordBits.size(); i++)
+ {
+ word += " " + wordBits[i];
+ }
+
+ this->nameApplication = this->executableName = word;
+ }
+ }
+ }
+
+ confFile.close();
+
+ //check children
+ std::vector<bool> checked(this->children.size(), false);
+ std::vector<bool> checkedFolders(this->folders.size(), false);
+
+ //check all folders
+ wxDir dir(crea::std2wx((this->path).c_str()));
+ if (dir.IsOpened())
+ {
+ wxString fileName;
+ bool cont = dir.GetFirst(&fileName, wxEmptyString, wxDIR_DIRS);
+ while (cont)
+ {
+ std::string stdfileName = crea::wx2std(fileName);
+ std::string applicationName = stdfileName;
+ //check if they already exist
+ bool found = false;
+ for (int i = 0;!found && i < this->folders.size(); i++)
+ {
+ if (this->folders[i]->GetName() == applicationName)
+ {
+ found = true;
+ int pos = std::find(this->children.begin(), this->children.end(), this->folders[i]) - this->children.begin();
+ checked[pos] = true;
+ checkedFolders[i] = true;
+ if(!this->folders[i]->Refresh(result))
+ return false;
+ }
+ }
+ if(!found)
+ {
+ modelCDMFolder* folder = new modelCDMFolder(this->path + "/" + stdfileName, this->level + 1);
+ this->folders.push_back(folder);
+ this->children.push_back(folder);
+ }
+ cont = dir.GetNext(&fileName);
+ }
+
+ cont = dir.GetFirst(&fileName, wxEmptyString, wxDIR_FILES);
+ while (cont)
+ {
+ std::string stdfileName = crea::wx2std(fileName);
+
+ //if CMakeLists, create CMakeLists
+ if(stdfileName == "CMakeLists.txt")
+ {
+ if (this->CMakeLists == NULL)
+ {
+ this->CMakeLists = new modelCDMCMakeListsFile(this->path + "/" + stdfileName, this->level + 1);
+ this->children.push_back(this->CMakeLists);
+ }
+ else
+ {
+ int pos = std::find(this->children.begin(), this->children.end(), this->CMakeLists) - this->children.begin();
+ checked[pos] = true;
+ if(!this->CMakeLists->Refresh(result))
+ return false;
+ }
+ }
+ //if is an unknown file, create file
+ else
+ {
+ bool found = false;
+ for (int i = 0; i <!found && this->children.size(); i++)
+ {
+ if (this->children[i]->GetName() == stdfileName)
+ {
+ found = true;
+ checked[i] = true;
+ if(!this->children[i]->Refresh(result))
+ return false;
+ }
+ }
+
+ if(!found)
+ {
+ modelCDMFile* file = new modelCDMFile(this->path + "/" + stdfileName, this->level + 1);
+ this->children.push_back(file);
+ }
+ }
+
+ cont = dir.GetNext(&fileName);
+ }
+ }
+
+ for (int i = 0; i < checkedFolders.size(); i++)
+ {
+ if(!checkedFolders[i])
+ {
+ this->folders.erase(this->folders.begin()+i);
+ checkedFolders.erase(checkedFolders.begin()+i);
+ i--;
+ }
+ }
+ for (int i = 0; i < checked.size(); i++)
+ {
+ if(!checked[i])
+ {
+ delete this->children[i];
+ this->children.erase(this->children.begin()+i);
+ checked.erase(checked.begin()+i);
+ i--;
+ }
+ }
+ this->SortChildren();
return true;
}
const std::string& GetNameApplication() const;
const std::string& GetExecutableName() const;
- void SetMainFile(const std::string& fileName);
+ bool SetExecutableName(const std::string& fileName, std::string*& result);
+
+ modelCDMFolder* CreateFolder(const std::string& name, std::string*& result);
- bool CreateFolder(
- const std::string& name,
- std::string*& result,
- const std::string& path = "/"
- );
virtual const bool Refresh(std::string*& result);
private:
std::string nameApplication;
std::string executableName;
- std::vector<modelCDMApplication*> applications;
+ std::vector<modelCDMFolder*> folders;
};
#endif /* MODELCDMAPPLICATION_H_ */
#include "modelCDMFolder.h"
+#include <fstream>
+#include <algorithm>
+
#include <creaWx.h>
#include <wx/dir.h>
this->children.clear();
}
-bool modelCDMFolder::CreateFolder(const std::string& name, std::string*& result,
- const std::string& path)
+modelCDMFolder* modelCDMFolder::CreateFolder(const std::string& name, std::string*& result)
{
- //TODO: implement method
- return true;
+ //TODO:: mkdir depending on OS
+ std::string command = "mkdir " + path + "/" + name;
+ if(system(command.c_str()))
+ {
+ result = new std::string("Error executing: " + command + ".");
+ return NULL;
+ }
+ modelCDMFolder* folder = new modelCDMFolder(path + "/" + name, level + 1);
+ this->folders.push_back(folder);
+ this->children.push_back(folder);
+
+ return folder;
}
bool modelCDMFolder::OpenCMakeListsFile(std::string*& result)
const bool modelCDMFolder::Refresh(std::string*& result)
{
- //TODO: implement method
+ //set attributes
+ this->type = wxDIR_DIRS;
+
+ //check children
+ std::vector<bool> checked(this->children.size(), false);
+ std::vector<bool> checkedFolders(this->folders.size(), false);
+
+ //check all folders
+ wxDir dir(crea::std2wx((this->path).c_str()));
+ if (dir.IsOpened())
+ {
+ wxString fileName;
+ bool cont = dir.GetFirst(&fileName, wxEmptyString, wxDIR_DIRS);
+ while (cont)
+ {
+ std::string stdfileName = crea::wx2std(fileName);
+ std::string folderName = stdfileName;
+ //check if they already exist
+ bool found = false;
+ for (int i = 0;!found && i < this->folders.size(); i++)
+ {
+ if (this->folders[i]->GetName() == folderName)
+ {
+ found = true;
+ int pos = std::find(this->children.begin(), this->children.end(), this->folders[i]) - this->children.begin();
+ checked[pos] = true;
+ checkedFolders[i] = true;
+ if(!this->folders[i]->Refresh(result))
+ return false;
+ }
+ }
+ if(!found)
+ {
+ modelCDMFolder* folder = new modelCDMFolder(this->path + "/" + stdfileName, this->level + 1);
+ this->folders.push_back(folder);
+ this->children.push_back(folder);
+ }
+ cont = dir.GetNext(&fileName);
+ }
+
+ cont = dir.GetFirst(&fileName, wxEmptyString, wxDIR_FILES);
+ while (cont)
+ {
+ std::string stdfileName = crea::wx2std(fileName);
+
+ //if CMakeLists, create CMakeLists
+ if(stdfileName == "CMakeLists.txt")
+ {
+ if (this->CMakeLists == NULL)
+ {
+ this->CMakeLists = new modelCDMCMakeListsFile(this->path + "/" + stdfileName, this->level + 1);
+ this->children.push_back(this->CMakeLists);
+ }
+ else
+ {
+ int pos = std::find(this->children.begin(), this->children.end(), this->CMakeLists) - this->children.begin();
+ checked[pos] = true;
+ if(!this->CMakeLists->Refresh(result))
+ return false;
+ }
+ }
+ //if is an unknown file, create file
+ else
+ {
+ bool found = false;
+ for (int i = 0; i <!found && this->children.size(); i++)
+ {
+ if (this->children[i]->GetName() == stdfileName)
+ {
+ found = true;
+ checked[i] = true;
+ if(!this->children[i]->Refresh(result))
+ return false;
+ }
+ }
+
+ if(!found)
+ {
+ modelCDMFile* file = new modelCDMFile(this->path + "/" + stdfileName, this->level + 1);
+ this->children.push_back(file);
+ }
+ }
+
+ cont = dir.GetNext(&fileName);
+ }
+ }
+
+ for (int i = 0; i < checkedFolders.size(); i++)
+ {
+ if(!checkedFolders[i])
+ {
+ this->folders.erase(this->folders.begin()+i);
+ checkedFolders.erase(checkedFolders.begin()+i);
+ i--;
+ }
+ }
+ for (int i = 0; i < checked.size(); i++)
+ {
+ if(!checked[i])
+ {
+ delete this->children[i];
+ this->children.erase(this->children.begin()+i);
+ checked.erase(checked.begin()+i);
+ i--;
+ }
+ }
+ this->SortChildren();
return true;
}
modelCDMCMakeListsFile* GetCMakeLists() const;
std::vector<modelCDMFolder*> GetFolders() const;
- bool CreateFolder(
+ modelCDMFolder* CreateFolder(
const std::string& name,
- std::string*& result,
- const std::string& path = "/"
+ std::string*& result
);
bool OpenCMakeListsFile(std::string* & result);
virtual const bool Refresh(std::string*& result);
const bool modelCDMLib::Refresh(std::string*& result)
{
+ std::cout << "refreshing lib" << std::endl;
this->type = wxDIR_DIRS;
this->name = "lib";
this->level = level;
#include "modelCDMLibrary.h"
+#include <fstream>
+#include <algorithm>
+
#include "CDMUtilities.h"
#include "creaWx.h"
#include "wx/dir.h"
modelCDMLibrary::modelCDMLibrary(const std::string& path, const int& level)
{
+ //folder name
std::vector<std::string> words;
std::string delimiters;
//TODO::fix for windows
delimiters = "/";
CDMUtilities::splitter::split(words, path, delimiters, CDMUtilities::splitter::no_empties);
- this->name = this->nameLibrary = words[words.size()-1];
+ this->name = words[words.size()-1];
- this->path = path;
+ //path
+ this->path = CDMUtilities::fixPath(path);
+ //type
this->type = wxDIR_DIRS;
+ //level
this->level = level;
- //TODO: open CMakeList
- //TODO: get libraryName
+ //open CMakeList
+ std::string pathMakeLists = path + "/CMakeLists.txt";
+
+ std::ifstream confFile;
+ confFile.open((pathMakeLists).c_str());
+
+ std::string word;
+ while(confFile.is_open() && !confFile.eof())
+ {
+ //get sets
+ std::getline(confFile,word,'(');
+ std::vector<std::string> wordBits;
+ CDMUtilities::splitter::split(wordBits,word," (\n",CDMUtilities::splitter::no_empties);
+
+ if(wordBits[wordBits.size()-1] == "SET")
+ {
+ //get library name
+ std::getline(confFile,word,')');
+ CDMUtilities::splitter::split(wordBits, word, " ", CDMUtilities::splitter::no_empties);
+ if(wordBits[0] == "LIBRARY_NAME")
+ {
+ word = wordBits[1];
+ for (int i = 2; i < wordBits.size(); i++)
+ {
+ word += " " + wordBits[i];
+ }
+
+ this->nameLibrary = word;
+ }
+ }
+ }
+
+ confFile.close();
+
+ //add library contents
+
+ this->children.clear();
+ wxDir dir(crea::std2wx((this->path).c_str()));
+ if (dir.IsOpened())
+ {
+ wxString fileName;
+ //folders
+ bool cont = dir.GetFirst(&fileName, wxEmptyString, wxDIR_DIRS);
+ while (cont)
+ {
+ std::string stdfileName = crea::wx2std(fileName);
+
+ modelCDMFolder* folder = new modelCDMFolder(this->path + "/" + stdfileName, this->level + 1);
+ this->folders.push_back(folder);
+ this->children.push_back(folder);
+
+ cont = dir.GetNext(&fileName);
+ }
+ //files
+ cont = dir.GetFirst(&fileName, wxEmptyString, wxDIR_FILES);
+ while (cont)
+ {
+ std::string stdfileName = crea::wx2std(fileName);
+
+ //if CMakeLists, create CMakeLists
+ if(stdfileName == "CMakeLists.txt")
+ {
+ this->CMakeLists = new modelCDMCMakeListsFile(this->path + "/" + stdfileName, this->level + 1);
+ this->children.push_back(this->CMakeLists);
+ }
+ //if is an unknown file, create file
+ else
+ {
+ this->children.push_back(new modelCDMFile(this->path + "/" + stdfileName, this->level + 1));
+ }
+
+ cont = dir.GetNext(&fileName);
+ }
+ }
+ this->SortChildren();
}
modelCDMLibrary::~modelCDMLibrary()
return this->nameLibrary;
}
-bool modelCDMLibrary::CreateFolder(
- const std::string& name,
- std::string*& result,
- const std::string& path)
+bool modelCDMLibrary::SetNameLibrary(const std::string& fileName, std::string*& result)
{
- //TODO: implement method
+ std::vector<std::string> words;
+ CDMUtilities::splitter::split(words, fileName, ", /\\\"", CDMUtilities::splitter::no_empties);
+ std::string fileNameReal = words[0];
+ for (int i = 1; i < words.size(); i++)
+ {
+ fileNameReal += "-" + words[i];
+ }
+
+ std::string line;
+ //opening original cmakelists
+ std::ifstream in((this->path + "/CMakeLists.txt").c_str());
+ if( !in.is_open())
+ {
+ result = new std::string("CMakeLists.txt file failed to open.");
+ return false;
+ }
+ //opening temporal cmakelists
+ std::ofstream out((this->path + "/CMakeLists.txt.tmp").c_str());
+ if( !out.is_open())
+ {
+ result = new std::string("CMakeLists.txt.tmp file failed to open.");
+ return false;
+ }
+ //copying contents from original to temporal and making changes
+ while (getline(in, line))
+ {
+ if(line.find("SET ( LIBRARY_NAME") != std::string::npos)
+ line = "SET ( LIBRARY_NAME " + fileNameReal + " )";
+ out << line << std::endl;
+ }
+ in.close();
+ out.close();
+ //delete old file and rename new file
+ std::string renameCommand = "mv " + this->path + "/CMakeLists.txt.tmp " + this->path + "/CMakeLists.txt";
+ if(system(renameCommand.c_str()))
+ {
+ result = new std::string("An error occurred while running '" + renameCommand + "'.");
+ return false;
+ }
+
+ this->nameLibrary = fileNameReal;
return true;
}
+modelCDMFolder* modelCDMLibrary::CreateFolder(const std::string& name, std::string*& result)
+{
+ //TODO:: mkdir depending on OS
+ std::string command = "mkdir " + path + "/" + name;
+ if(system(command.c_str()))
+ {
+ result = new std::string("Error executing: " + command + ".");
+ return NULL;
+ }
+ modelCDMFolder* folder = new modelCDMFolder(path + "/" + name, level + 1);
+ this->folders.push_back(folder);
+ this->children.push_back(folder);
+
+ return folder;
+}
+
const bool modelCDMLibrary::Refresh(std::string*& result)
{
- //TODO: implement method
+ //set attributes
+ this->type = wxDIR_DIRS;
+
+ //open CMakeList
+ std::string pathMakeLists = path + "/CMakeLists.txt";
+
+ std::ifstream confFile;
+ confFile.open((pathMakeLists).c_str());
+
+ std::string word;
+ while(confFile.is_open() && !confFile.eof())
+ {
+ //get sets
+ std::getline(confFile,word,'(');
+ std::vector<std::string> wordBits;
+ CDMUtilities::splitter::split(wordBits,word," (\n",CDMUtilities::splitter::no_empties);
+
+ if(wordBits[wordBits.size()-1] == "SET")
+ {
+ //get library name
+ std::getline(confFile,word,')');
+ CDMUtilities::splitter::split(wordBits, word, " ", CDMUtilities::splitter::no_empties);
+ if(wordBits[0] == "LIBRARY_NAME")
+ {
+ word = wordBits[1];
+ for (int i = 2; i < wordBits.size(); i++)
+ {
+ word += " " + wordBits[i];
+ }
+
+ this->nameLibrary = word;
+ }
+ }
+ }
+
+ confFile.close();
+
+ //check children
+ std::vector<bool> checked(this->children.size(), false);
+ std::vector<bool> checkedFolders(this->folders.size(), false);
+
+ //check all folders
+ wxDir dir(crea::std2wx((this->path).c_str()));
+ if (dir.IsOpened())
+ {
+ wxString fileName;
+ bool cont = dir.GetFirst(&fileName, wxEmptyString, wxDIR_DIRS);
+ while (cont)
+ {
+ std::string stdfileName = crea::wx2std(fileName);
+ std::string folderName = stdfileName;
+ //check if they already exist
+ bool found = false;
+ for (int i = 0;!found && i < this->folders.size(); i++)
+ {
+ if (this->folders[i]->GetName() == folderName)
+ {
+ found = true;
+ int pos = std::find(this->children.begin(), this->children.end(), this->folders[i]) - this->children.begin();
+ checked[pos] = true;
+ checkedFolders[i] = true;
+ if(!this->folders[i]->Refresh(result))
+ return false;
+ }
+ }
+ if(!found)
+ {
+ modelCDMFolder* folder = new modelCDMFolder(this->path + "/" + stdfileName, this->level + 1);
+ this->folders.push_back(folder);
+ this->children.push_back(folder);
+ }
+ cont = dir.GetNext(&fileName);
+ }
+
+ cont = dir.GetFirst(&fileName, wxEmptyString, wxDIR_FILES);
+ while (cont)
+ {
+ std::string stdfileName = crea::wx2std(fileName);
+
+ //if CMakeLists, create CMakeLists
+ if(stdfileName == "CMakeLists.txt")
+ {
+ if (this->CMakeLists == NULL)
+ {
+ this->CMakeLists = new modelCDMCMakeListsFile(this->path + "/" + stdfileName, this->level + 1);
+ this->children.push_back(this->CMakeLists);
+ }
+ else
+ {
+ int pos = std::find(this->children.begin(), this->children.end(), this->CMakeLists) - this->children.begin();
+ checked[pos] = true;
+ if(!this->CMakeLists->Refresh(result))
+ return false;
+ }
+ }
+ //if is an unknown file, create file
+ else
+ {
+ bool found = false;
+ for (int i = 0; i <!found && this->children.size(); i++)
+ {
+ if (this->children[i]->GetName() == stdfileName)
+ {
+ found = true;
+ checked[i] = true;
+ if(!this->children[i]->Refresh(result))
+ return false;
+ }
+ }
+
+ if(!found)
+ {
+ modelCDMFile* file = new modelCDMFile(this->path + "/" + stdfileName, this->level + 1);
+ this->children.push_back(file);
+ }
+ }
+
+ cont = dir.GetNext(&fileName);
+ }
+ }
+
+ for (int i = 0; i < checkedFolders.size(); i++)
+ {
+ if(!checkedFolders[i])
+ {
+ this->folders.erase(this->folders.begin()+i);
+ checkedFolders.erase(checkedFolders.begin()+i);
+ i--;
+ }
+ }
+ for (int i = 0; i < checked.size(); i++)
+ {
+ if(!checked[i])
+ {
+ delete this->children[i];
+ this->children.erase(this->children.begin()+i);
+ checked.erase(checked.begin()+i);
+ i--;
+ }
+ }
+ this->SortChildren();
return true;
}
~modelCDMLibrary();
const std::string& GetNameLibrary() const;
+ bool SetNameLibrary(const std::string& fileName, std::string*& result);
+
+ modelCDMFolder* CreateFolder(const std::string& name, std::string*& result);
- bool CreateFolder(
- const std::string& name,
- std::string*& result,
- const std::string& path = "/"
- );
virtual const bool Refresh(std::string*& result);
private:
std::string nameLibrary;
- std::vector<modelCDMLibrary*> libraries;
+ std::vector<modelCDMFolder*> folders;
};
#endif /* MODELCDMLIBRARY_H_ */
#include "modelCDMPackage.h"
#include <fstream>
+#include <algorithm>
#include "creaWx.h"
#include "wx/dir.h"
const bool modelCDMPackage::Refresh(std::string*& result)
{
- //TODO: implement method
+ std::cout << "refreshing package" << std::endl;
+ this->type = wxDIR_DIRS;
+ this->name = name;
+ this->level = level;
+ this->path = path;
+
+ //Get Package Name
+
+ //TODO: set pathMakeLists for windows
+ std::string pathMakeLists = path + "/CMakeLists.txt";
+
+ std::ifstream confFile;
+ confFile.open((pathMakeLists).c_str());
+
+ std::string word;
+ while(confFile.is_open() && !confFile.eof())
+ {
+ //get sets
+ std::getline(confFile,word,'(');
+ std::vector<std::string> wordBits;
+ CDMUtilities::splitter::split(wordBits,word," (\n",CDMUtilities::splitter::no_empties);
+
+ if(wordBits[wordBits.size()-1] == "SET")
+ {
+ //get package name
+ std::getline(confFile,word,')');
+ CDMUtilities::splitter::split(wordBits, word, " ", CDMUtilities::splitter::no_empties);
+ if(wordBits[0] == "BBTK_PACKAGE_NAME")
+ {
+ word = wordBits[1];
+ for (int i = 2; i < wordBits.size(); i++)
+ {
+ word += " " + wordBits[i];
+ }
+ wordBits.clear();
+ CDMUtilities::splitter::split(wordBits, word, "\"", CDMUtilities::splitter::no_empties);
+
+ this->namePackage = wordBits[0];
+ }
+ else if(wordBits[0] == "${BBTK_PACKAGE_NAME}_AUTHOR")
+ {
+ word = wordBits[1];
+ for (int i = 2; i < wordBits.size(); i++)
+ {
+ word += " " + wordBits[i];
+ }
+ wordBits.clear();
+ CDMUtilities::splitter::split(wordBits, word, "\"", CDMUtilities::splitter::no_empties);
+
+ this->authors = wordBits[0];
+ }
+ else if(wordBits[0] == "${BBTK_PACKAGE_NAME}_DESCRIPTION")
+ {
+ word = wordBits[1];
+ for (int i = 2; i < wordBits.size(); i++)
+ {
+ word += " " + wordBits[i];
+ }
+ wordBits.clear();
+ CDMUtilities::splitter::split(wordBits, word, "\"", CDMUtilities::splitter::no_empties);
+
+ this->description = wordBits[0];
+ }
+ else if(wordBits[0] == "${BBTK_PACKAGE_NAME}_MAJOR_VERSION")
+ {
+ this->version = wordBits[1];
+ }
+ else if(wordBits[0] == "${BBTK_PACKAGE_NAME}_MINOR_VERSION")
+ {
+ this->version += "." + wordBits[1];
+ }
+ else if(wordBits[0] == "${BBTK_PACKAGE_NAME}_BUILD_VERSION")
+ {
+ this->version += "." + wordBits[1];
+ }
+ }
+ }
+
+
+
+ std::vector<bool> checked(this->children.size(), false);
+ std::vector<bool> checkedBlackBoxes(this->blackBoxes.size(), false);
+
+ //check all folders
+ wxDir dir(crea::std2wx((this->path).c_str()));
+ if (dir.IsOpened())
+ {
+ wxString fileName;
+ bool cont = dir.GetFirst(&fileName, wxEmptyString, wxDIR_DIRS);
+ while (cont)
+ {
+
+ std::string stdfileName = crea::wx2std(fileName);
+
+
+ if(stdfileName == "src")
+ {
+ wxDir srcF(crea::std2wx((path + "/" + "src").c_str()));
+ if (srcF.IsOpened())
+ {
+ wxString srcName;
+ bool innerCont = srcF.GetFirst(&srcName, wxT("*.h"), wxDIR_FILES);
+ while (innerCont)
+ {
+ std::string blackBoxName = crea::wx2std(srcName);
+ if(crea::wx2std(srcName.substr(0,2)) == "bb")
+ {
+ //check if box already exist
+ bool found = false;
+ for (int i = 0;!found && i < this->blackBoxes.size(); i++)
+ {
+ if (this->blackBoxes[i]->GetName() == blackBoxName)
+ {
+ found = true;
+ int pos = std::find(this->children.begin(), this->children.end(), this->blackBoxes[i]) - this->children.begin();
+ checked[pos] = true;
+ checkedBlackBoxes[i] = true;
+ if(!this->blackBoxes[i]->Refresh(result))
+ return false;
+ }
+ }
+ if(!found)
+ {
+ modelCDMBlackBox* blackBox = new modelCDMBlackBox(blackBoxName, path + "/" + "src", this->level +1);
+ this->blackBoxes.push_back(blackBox);
+ this->children.push_back(blackBox);
+ }
+ }
+ innerCont = srcF.GetNext(&srcName);
+ }
+ }
+
+ }
+ //if not src
+ else
+ {
+ //check if they already exist
+ bool found = false;
+ for (int i = 0;!found && i < this->children.size(); i++)
+ {
+ if (this->children[i]->GetName() == stdfileName)
+ {
+ found = true;
+ checked[i] = true;
+ if(!this->children[i]->Refresh(result))
+ return false;
+ }
+ }
+ if(!found)
+ {
+ modelCDMFolder* folder = new modelCDMFolder(this->path + "/" + stdfileName, this->level + 1);
+ this->children.push_back(folder);
+ }
+ cont = dir.GetNext(&fileName);
+ }
+ }
+
+ cont = dir.GetFirst(&fileName, wxEmptyString, wxDIR_FILES);
+ while (cont)
+ {
+ std::string stdfileName = crea::wx2std(fileName);
+
+ //if CMakeLists, create CMakeLists
+ if(stdfileName == "CMakeLists.txt")
+ {
+ if (this->CMakeLists == NULL)
+ {
+ this->CMakeLists = new modelCDMCMakeListsFile(this->path + "/" + stdfileName, this->level + 1);
+ this->children.push_back(this->CMakeLists);
+ }
+ else
+ {
+ int pos = std::find(this->children.begin(), this->children.end(), this->CMakeLists) - this->children.begin();
+ checked[pos] = true;
+ if(!this->CMakeLists->Refresh(result))
+ return false;
+ }
+ }
+ //if is an unknown file, create file
+ else
+ {
+ bool found = false;
+ for (int i = 0; i <!found && this->children.size(); i++)
+ {
+ if (this->children[i]->GetName() == stdfileName)
+ {
+ found = true;
+ checked[i] = true;
+ if(!this->children[i]->Refresh(result))
+ return false;
+ }
+ }
+
+ if(!found)
+ {
+ modelCDMFile* file = new modelCDMFile(this->path + "/" + stdfileName, this->level + 1);
+ this->children.push_back(file);
+ }
+ }
+
+ cont = dir.GetNext(&fileName);
+ }
+ }
+
+ for (int i = 0; i < checkedBlackBoxes.size(); i++)
+ {
+ if(!checkedBlackBoxes[i])
+ {
+ this->blackBoxes.erase(this->blackBoxes.begin()+i);
+ checkedBlackBoxes.erase(checkedBlackBoxes.begin()+i);
+ i--;
+ }
+ }
+ for (int i = 0; i < checked.size(); i++)
+ {
+ if(!checked[i])
+ {
+ delete this->children[i];
+ this->children.erase(this->children.begin()+i);
+ checked.erase(checked.begin()+i);
+ i--;
+ }
+ }
+ this->SortChildren();
return true;
}
#include "wxCDMApplicationDescriptionPanel.h"
+#include "CDMUtilities.h"
#include "wxCDMMainFrame.h"
#include "creaDevManagerIds.h"
BEGIN_EVENT_TABLE(wxCDMApplicationDescriptionPanel, wxPanel)
EVT_BUTTON(ID_BUTTON_PREV, wxCDMApplicationDescriptionPanel::OnBtnReturn)
+EVT_BUTTON(ID_BUTTON_SET_NAME, wxCDMApplicationDescriptionPanel::OnBtnSetExeName)
EVT_BUTTON(ID_BUTTON_CREATE_CLASS, wxCDMApplicationDescriptionPanel::OnBtnCreateClass)
EVT_BUTTON(ID_BUTTON_CREATE_FOLDER, wxCDMApplicationDescriptionPanel::OnBtnCreateFolder)
EVT_BUTTON(ID_BUTTON_EDIT_CMAKELISTSFILE, wxCDMApplicationDescriptionPanel::OnBtnEditCMakeLists)
returnbt->SetToolTip(wxT("Return to the active project description."));
sizer->Add(returnbt, 0, wxALIGN_CENTER | wxALL, 5);
- //Welcome
+ //Title
sizer->Add(new wxStaticText(this, -1, _("Application")),0, wxALIGN_CENTER, 0);
//Image
sizer->Add(new wxStaticBitmap(this, -1, wxBitmap(AIcon64)),0, wxALIGN_CENTER, 0);
- //Project Name
- sizer->Add(new wxStaticText(this, -1, crea::std2wx(this->application->GetNameApplication())),0, wxALIGN_CENTER, 0);
+ //Application Name
+ sizer->Add(new wxStaticText(this, -1, crea::std2wx(this->application->GetName())),0, wxALIGN_CENTER, 0);
- //Project Properties
+ //Properties
wxStaticBoxSizer* propertiesBox = new wxStaticBoxSizer(wxVERTICAL, this, wxT("&Properties"));
wxPanel* propertiesPanel = new wxPanel(this);
wxBoxSizer* propertiesPanelSizer = new wxBoxSizer(wxVERTICAL);
wxStaticText *pMainFile = new wxStaticText(propertiesPanel, -1, wxT("Executable Name"));
wxBoxSizer* pMainFilesz = new wxBoxSizer(wxHORIZONTAL);
- wxStaticText* pMainFiletc = new wxStaticText(propertiesPanel, wxID_ANY, crea::std2wx(this->application->GetExecutableName()));
- wxButton* pMainFilebt = new wxButton(propertiesPanel, ID_BUTTON_SET_VERSION, wxT("Set"));
+ this->executableNametc = new wxStaticText(propertiesPanel, wxID_ANY, crea::std2wx(this->application->GetExecutableName()));
+ wxButton* pMainFilebt = new wxButton(propertiesPanel, ID_BUTTON_SET_NAME, wxT("Set"));
pMainFilebt->SetToolTip(wxT("Set the name of the executable file for the application."));
- pMainFilesz->Add(pMainFiletc, 0, wxALIGN_CENTER_VERTICAL, 0);
+ pMainFilesz->Add(this->executableNametc, 0, wxALIGN_CENTER_VERTICAL, 0);
pMainFilesz->Add(pMainFilebt, 0, wxALIGN_CENTER | wxLEFT, 10);
propertiesGridSizer->Add(pMainFile, 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
wxPostEvent(this->GetParent(), *newEvent);
}
+void wxCDMApplicationDescriptionPanel::OnBtnSetExeName(wxCommandEvent& event)
+{
+ //get name
+ wxString versionWx = wxGetTextFromUser(
+ wxT("Enter the new executable name"),
+ wxT("Change Application Executable Name - creaDevManager"),
+ crea::std2wx(this->application->GetExecutableName())
+ );
+ //check name
+ std::vector<std::string> parts;
+ CDMUtilities::splitter::split(parts, crea::wx2std(versionWx), " .", CDMUtilities::splitter::no_empties);
+ if(parts.size() > 0)
+ {
+ std::string* result;
+ if(!this->application->SetExecutableName(crea::wx2std(versionWx), result))
+ wxMessageBox(crea::std2wx(*result),_T("Change Application Executable Name - Error!"),wxOK | wxICON_ERROR);
+ }
+ else
+ {
+ wxMessageBox(crea::std2wx("No name specified"),_T("Set Application Executable Name - Error!"),wxOK | wxICON_ERROR);
+ }
+ this->executableNametc->SetLabel(crea::std2wx(this->application->GetExecutableName()));
+}
+
void wxCDMApplicationDescriptionPanel::OnBtnCreateClass(wxCommandEvent& event)
{
//TODO: implement method
void wxCDMApplicationDescriptionPanel::OnBtnCreateFolder(wxCommandEvent& event)
{
- //TODO: implement method
- std::cerr << "Event OnBtnCreateFolder not implemented" << std::endl;
- event.Skip();
+ //get name
+ wxString folderName = wxGetTextFromUser(
+ wxT("Enter the name of the new folder:"),
+ wxT("Create Folder - creaDevManager")
+ );
+ //check name
+ std::vector<std::string> parts;
+ CDMUtilities::splitter::split(parts, crea::wx2std(folderName), " /\\\"", CDMUtilities::splitter::no_empties);
+ if(parts.size() > 0)
+ {
+ std::string* result;
+ modelCDMFolder* folderC = this->application->CreateFolder(crea::wx2std(folderName), result);
+ if(folderC == NULL)
+ {
+ wxMessageBox(crea::std2wx(*result),_T("Create Folder - Error!"),wxOK | wxICON_ERROR);
+ return;
+ }
+ ((wxCDMMainFrame*)this->GetParent())->RefreshProject();
+ wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_DISPLAY_CHANGED);
+ newEvent->SetInt(folderC->GetId());
+ wxPostEvent(this->GetParent(), *newEvent);
+ wxMessageBox(crea::std2wx("The folder was successfully created"),_T("Create Folder - Success"),wxOK | wxICON_INFORMATION);
+ }
+ else
+ {
+ wxMessageBox(crea::std2wx("No name specified"),_T("Create Folder - Error!"),wxOK | wxICON_ERROR);
+ }
}
void wxCDMApplicationDescriptionPanel::OnBtnEditCMakeLists(wxCommandEvent& event)
private:
modelCDMApplication* application;
+ wxStaticText* executableNametc;
//handlers
protected:
void OnBtnReturn(wxCommandEvent& event);
+ void OnBtnSetExeName(wxCommandEvent& event);
void OnBtnCreateClass(wxCommandEvent& event);
void OnBtnCreateFolder(wxCommandEvent& event);
void OnBtnEditCMakeLists(wxCommandEvent& event);
#include "wxCDMFolderDescriptionPanel.h"
#include "wxCDMMainFrame.h"
+#include "CDMUtilities.h"
#include "creaDevManagerIds.h"
#include "images/FdIcon64.xpm"
EVT_BUTTON(ID_BUTTON_PREV, wxCDMFolderDescriptionPanel::OnBtnReturn)
EVT_BUTTON(ID_BUTTON_OPEN_FOLDER, wxCDMFolderDescriptionPanel::OnBtnOpenInExplorer)
EVT_BUTTON(ID_BUTTON_EDIT_CMAKELISTSFILE, wxCDMFolderDescriptionPanel::OnBtnEditCMakeLists)
+EVT_BUTTON(ID_BUTTON_CREATE_FOLDER, wxCDMFolderDescriptionPanel::OnBtnCreateFolder)
END_EVENT_TABLE()
wxCDMFolderDescriptionPanel::wxCDMFolderDescriptionPanel(
actionsPanelSizer->Add(editCMakebt, 0, wxALL, 5);
}
+ wxButton* createFolderbt = new wxButton(actionsPanel, ID_BUTTON_CREATE_FOLDER, _T("Create Folder"));
+ createFolderbt->SetToolTip(wxT("Create a new folder inside this folder."));
+ actionsPanelSizer->Add(createFolderbt, 0, wxALL, 5);
+
actionsPanel->SetSizer(actionsPanelSizer);
actionsPanelSizer->Fit(actionsPanel);
actionsBox->Add(actionsPanel, 0, wxEXPAND);
void wxCDMFolderDescriptionPanel::OnBtnOpenInExplorer(wxCommandEvent& event)
{
std::string* result;
- if(!this->folder->OpenInFileExplorer(result))
- wxMessageBox(crea::std2wx(*result),_T("Open Folder - Error!"),wxOK | wxICON_ERROR);
+ if(!this->folder->OpenInFileExplorer(result))
+ wxMessageBox(crea::std2wx(*result),_T("Open Folder - Error!"),wxOK | wxICON_ERROR);
}
void wxCDMFolderDescriptionPanel::OnBtnEditCMakeLists(wxCommandEvent& event)
}
}
+void wxCDMFolderDescriptionPanel::OnBtnCreateFolder(wxCommandEvent& event)
+{
+ //get name
+ wxString folderName = wxGetTextFromUser(
+ wxT("Enter the name of the new folder:"),
+ wxT("Create Folder - creaDevManager")
+ );
+ //check name
+ std::vector<std::string> parts;
+ CDMUtilities::splitter::split(parts, crea::wx2std(folderName), " /\\\"", CDMUtilities::splitter::no_empties);
+ if(parts.size() > 0)
+ {
+ std::string* result;
+ modelCDMFolder* folderC = this->folder->CreateFolder(crea::wx2std(folderName), result);
+ if(folderC == NULL)
+ {
+ wxMessageBox(crea::std2wx(*result),_T("Create Folder - Error!"),wxOK | wxICON_ERROR);
+ return;
+ }
+ ((wxCDMMainFrame*)this->GetParent())->RefreshProject();
+ wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_DISPLAY_CHANGED);
+ newEvent->SetInt(folderC->GetId());
+ wxPostEvent(this->GetParent(), *newEvent);
+ wxMessageBox(crea::std2wx("The folder was successfully created"),_T("Create Folder - Success"),wxOK | wxICON_INFORMATION);
+ }
+ else
+ {
+ wxMessageBox(crea::std2wx("No name specified"),_T("Create Folder - Error!"),wxOK | wxICON_ERROR);
+ }
+}
+
void wxCDMFolderDescriptionPanel::OnCMakeMouseEnter(wxMouseEvent& event)
{
wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LIST_ITEM_SELECTED);
protected:
void OnBtnReturn(wxCommandEvent& event);
void OnBtnEditCMakeLists(wxCommandEvent& event);
+ void OnBtnCreateFolder(wxCommandEvent& event);
void OnBtnOpenInExplorer(wxCommandEvent& event);
void OnCMakeMouseEnter(wxMouseEvent& event);
#include "wxCDMLibraryDescriptionPanel.h"
+#include "CDMUtilities.h"
#include "wxCDMMainFrame.h"
#include "creaDevManagerIds.h"
BEGIN_EVENT_TABLE(wxCDMLibraryDescriptionPanel, wxPanel)
EVT_BUTTON(ID_BUTTON_PREV, wxCDMLibraryDescriptionPanel::OnBtnReturn)
+EVT_BUTTON(ID_BUTTON_SET_NAME, wxCDMLibraryDescriptionPanel::OnBtnSetExeName)
EVT_BUTTON(ID_BUTTON_CREATE_CLASS, wxCDMLibraryDescriptionPanel::OnBtnCreateClass)
EVT_BUTTON(ID_BUTTON_CREATE_FOLDER, wxCDMLibraryDescriptionPanel::OnBtnCreateFolder)
EVT_BUTTON(ID_BUTTON_EDIT_CMAKELISTSFILE, wxCDMLibraryDescriptionPanel::OnBtnEditCMakeLists)
//Image
sizer->Add(new wxStaticBitmap(this, -1, wxBitmap(LIcon64)),0, wxALIGN_CENTER, 0);
- //Project Name
- sizer->Add(new wxStaticText(this, -1, crea::std2wx(this->library->GetNameLibrary())),0, wxALIGN_CENTER, 0);
+ //Application Name
+ sizer->Add(new wxStaticText(this, -1, crea::std2wx(this->library->GetName())),0, wxALIGN_CENTER, 0);
+
+ //Properties
+ wxStaticBoxSizer* propertiesBox = new wxStaticBoxSizer(wxVERTICAL, this, wxT("&Properties"));
+ wxPanel* propertiesPanel = new wxPanel(this);
+ wxBoxSizer* propertiesPanelSizer = new wxBoxSizer(wxVERTICAL);
+
+ wxFlexGridSizer* propertiesGridSizer = new wxFlexGridSizer(4, 2, 9, 15);
+
+ wxStaticText *pMainFile = new wxStaticText(propertiesPanel, -1, wxT("Library Name"));
+ wxBoxSizer* pMainFilesz = new wxBoxSizer(wxHORIZONTAL);
+ this->libraryNametc = new wxStaticText(propertiesPanel, wxID_ANY, crea::std2wx(this->library->GetNameLibrary()));
+ wxButton* pMainFilebt = new wxButton(propertiesPanel, ID_BUTTON_SET_NAME, wxT("Set"));
+ pMainFilebt->SetToolTip(wxT("Set the name of the library for the project."));
+ pMainFilesz->Add(this->libraryNametc, 0, wxALIGN_CENTER_VERTICAL, 0);
+ pMainFilesz->Add(pMainFilebt, 0, wxALIGN_CENTER | wxLEFT, 10);
+
+ propertiesGridSizer->Add(pMainFile, 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+ propertiesGridSizer->Add(pMainFilesz, 1, wxEXPAND);
+
+ propertiesGridSizer->AddGrowableCol(1,1);
+
+ propertiesPanelSizer->Add(propertiesGridSizer, 0, wxEXPAND);
+ propertiesPanel->SetSizer(propertiesPanelSizer);
+ propertiesPanelSizer->Fit(propertiesPanel);
+ propertiesBox->Add(propertiesPanel, 0, wxEXPAND);
+ sizer->Add(propertiesBox, 0, wxEXPAND | wxALL, 10);
//Actions
wxStaticBoxSizer* actionsBox = new wxStaticBoxSizer(wxHORIZONTAL, this, wxT("&Actions"));
wxPostEvent(this->GetParent(), *newEvent);
}
+void wxCDMLibraryDescriptionPanel::OnBtnSetExeName(wxCommandEvent& event)
+{
+ //get name
+ wxString versionWx = wxGetTextFromUser(
+ wxT("Enter the new executable name"),
+ wxT("Change Library Name - creaDevManager"),
+ crea::std2wx(this->library->GetNameLibrary())
+ );
+ //check name
+ std::vector<std::string> parts;
+ CDMUtilities::splitter::split(parts, crea::wx2std(versionWx), " .", CDMUtilities::splitter::no_empties);
+ if(parts.size() > 0)
+ {
+ std::string* result;
+ if(!this->library->SetNameLibrary(crea::wx2std(versionWx), result))
+ wxMessageBox(crea::std2wx(*result),_T("Change Library Name - Error!"),wxOK | wxICON_ERROR);
+ }
+ else
+ {
+ wxMessageBox(crea::std2wx("No name specified"),_T("Set Library Name - Error!"),wxOK | wxICON_ERROR);
+ }
+ this->libraryNametc->SetLabel(crea::std2wx(this->library->GetNameLibrary()));
+}
+
void wxCDMLibraryDescriptionPanel::OnBtnCreateClass(wxCommandEvent& event)
{
//TODO: implement method
void wxCDMLibraryDescriptionPanel::OnBtnCreateFolder(wxCommandEvent& event)
{
- //TODO: implement method
- std::cerr << "Event OnBtnCreateFolder not implemented" << std::endl;
- event.Skip();
+ //get name
+ wxString folderName = wxGetTextFromUser(
+ wxT("Enter the name of the new folder:"),
+ wxT("Create Folder - creaDevManager")
+ );
+ //check name
+ std::vector<std::string> parts;
+ CDMUtilities::splitter::split(parts, crea::wx2std(folderName), " /\\\"", CDMUtilities::splitter::no_empties);
+ if(parts.size() > 0)
+ {
+ std::string* result;
+ modelCDMFolder* folderC = this->library->CreateFolder(crea::wx2std(folderName), result);
+ if(folderC == NULL)
+ {
+ wxMessageBox(crea::std2wx(*result),_T("Create Folder - Error!"),wxOK | wxICON_ERROR);
+ return;
+ }
+ ((wxCDMMainFrame*)this->GetParent())->RefreshProject();
+ wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_DISPLAY_CHANGED);
+ newEvent->SetInt(folderC->GetId());
+ wxPostEvent(this->GetParent(), *newEvent);
+ wxMessageBox(crea::std2wx("The folder was successfully created"),_T("Create Folder - Success"),wxOK | wxICON_INFORMATION);
+ }
+ else
+ {
+ wxMessageBox(crea::std2wx("No name specified"),_T("Create Folder - Error!"),wxOK | wxICON_ERROR);
+ }
}
void wxCDMLibraryDescriptionPanel::OnBtnEditCMakeLists(wxCommandEvent& event)
{
std::string* result;
- if(!this->library->OpenCMakeListsFile(result))
- wxMessageBox(crea::std2wx(*result),_T("Open CMakeLists File - Error!"),wxOK | wxICON_ERROR);
+ if(!this->library->OpenCMakeListsFile(result))
+ wxMessageBox(crea::std2wx(*result),_T("Open CMakeLists File - Error!"),wxOK | wxICON_ERROR);
- wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LIST_ITEM_DESELECTED);
+ wxCommandEvent* newEvent = new wxCommandEvent(wxEVT_COMMAND_LIST_ITEM_DESELECTED);
- if(this->library->GetCMakeLists() != NULL)
- {
- int CMId = this->library->GetCMakeLists()->GetId();
- newEvent->SetInt(CMId);
- newEvent->SetId(0);
- wxPostEvent(this->GetParent(), *newEvent);
- }
+ if(this->library->GetCMakeLists() != NULL)
+ {
+ int CMId = this->library->GetCMakeLists()->GetId();
+ newEvent->SetInt(CMId);
+ newEvent->SetId(0);
+ wxPostEvent(this->GetParent(), *newEvent);
+ }
- event.Skip();
+ event.Skip();
}
void wxCDMLibraryDescriptionPanel::OnBtnOpenFolder(wxCommandEvent& event)
private:
modelCDMLibrary* library;
+ wxStaticText* libraryNametc;
//handlers
protected:
void OnBtnReturn(wxCommandEvent& event);
+ void OnBtnSetExeName(wxCommandEvent& event);
void OnBtnCreateClass(wxCommandEvent& event);
void OnBtnCreateFolder(wxCommandEvent& event);
void OnBtnEditCMakeLists(wxCommandEvent& event);
wxMessageBox( crea::std2wx(result->c_str()), wxT("Refresh Project - Error"), wxICON_ERROR);
}
this->tree_Projects->BuildTree(this->model->GetModelElements(), this->model->GetProject());
+
this->auiManager.Update();
+
+ this->tree_Projects->SelectItem(this->model->GetProject()->GetId(), false);
+ this->tree_Projects->SelectItem(this->model->GetProject()->GetId(), true);
+
//TODO: Show possible problems in CMakeLists files
event.Skip();
}