Browse Source

generalized get variable from cmake

merge-requests/365/head
tedjk 11 years ago
parent
commit
be40890708
  1. 131
      juci/directories.cc
  2. 2
      juci/directories.h
  3. 4
      juci/window.cc

131
juci/directories.cc

@ -11,7 +11,7 @@ open_folder(const boost::filesystem::path& dir_path) {
m_refTreeModel = Gtk::TreeStore::create(view()); m_refTreeModel = Gtk::TreeStore::create(view());
m_TreeView.set_model(m_refTreeModel); m_TreeView.set_model(m_refTreeModel);
m_TreeView.remove_all_columns(); m_TreeView.remove_all_columns();
std::string project_name = get_project_name(dir_path); std::string project_name = GetCmakeVarValue(dir_path, "project");
m_TreeView.append_column(project_name, view().m_col_name); m_TreeView.append_column(project_name, view().m_col_name);
int row_id = 0; int row_id = 0;
Gtk::TreeModel::Row row; Gtk::TreeModel::Row row;
@ -77,79 +77,80 @@ int Directories::Controller::count(const std::string path) {
if (path[i] == '/') count++; if (path[i] == '/') count++;
return count; return count;
} }
std::string Directories::Controller::
get_project_name(const boost::filesystem::path& dir_path) { std::string Directories::Controller::
std::string project_name; GetCmakeVarValue(const boost::filesystem::path& dir_path, std::string command_name) {
std::string project_name_var; std::string project_name;
boost::filesystem::directory_iterator end_itr; std::string project_name_var;
for (boost::filesystem::directory_iterator itr( dir_path ); boost::filesystem::directory_iterator end_itr;
itr != end_itr; for (boost::filesystem::directory_iterator itr( dir_path );
++itr ) { itr != end_itr;
if (itr->path().filename().string() == "CMakeLists.txt") { ++itr ) {
std::ifstream ifs(itr->path().string()); if (itr->path().filename().string() == "CMakeLists.txt") {
std::string line; std::ifstream ifs(itr->path().string());
while (std::getline(ifs, line)) { std::string line;
if (line.find("project(", 0) != std::string::npos while (std::getline(ifs, line)) {
|| line.find("project (", 0) != std::string::npos ) { if (line.find(command_name+"(", 0) != std::string::npos
size_t variabel_start = line.find("{", 0); || line.find(command_name+" (", 0) != std::string::npos ) {
size_t variabel_end = line.find("}", variabel_start); size_t variabel_start = line.find("{", 0);
project_name_var = line.substr(variabel_start+1, size_t variabel_end = line.find("}", variabel_start);
(variabel_end)-variabel_start-1); project_name_var = line.substr(variabel_start+1,
boost::algorithm::trim(project_name_var); (variabel_end)-variabel_start-1);
if (variabel_start == std::string::npos) { // not a variabel boost::algorithm::trim(project_name_var);
variabel_start = line.find("(", 0); if (variabel_start == std::string::npos) { // not a variabel
variabel_end = line.find(")", variabel_start); variabel_start = line.find("(", 0);
return line.substr(variabel_start+1, variabel_end = line.find(")", variabel_start);
(variabel_end)-variabel_start-1); return line.substr(variabel_start+1,
(variabel_end)-variabel_start-1);
}
break;
} }
break;
} }
} std::ifstream ifs2(itr->path().string());
std::ifstream ifs2(itr->path().string()); while (std::getline(ifs2, line)) {
while (std::getline(ifs2, line)) { if (line.find("set(", 0) != std::string::npos
if (line.find("set(", 0) != std::string::npos || line.find("set (", 0) != std::string::npos) {
|| line.find("set (", 0) != std::string::npos) { if( line.find(project_name_var, 0) != std::string::npos) {
if( line.find(project_name_var, 0) != std::string::npos) { size_t variabel_start = line.find(project_name_var, 0)
size_t variabel_start = line.find(project_name_var, 0) +project_name_var.length();
+project_name_var.length(); size_t variabel_end = line.find(")", variabel_start);
size_t variabel_end = line.find(")", variabel_start); project_name = line.substr(variabel_start+1,
project_name = line.substr(variabel_start+1, variabel_end-variabel_start-1);
variabel_end-variabel_start-1); boost::algorithm::trim(project_name);
boost::algorithm::trim(project_name); return project_name;
return project_name; }
} }
} }
break;
} }
break;
} }
return "no project name";
} }
return "no project name";
}
Directories::Config::Config() { Directories::Config::Config() {
} }
Directories::Config::Config(Directories::Config& cfg) : Directories::Config::Config(Directories::Config& cfg) :
ignore_list_(cfg.ignore_list()), exception_list_(cfg.exception_list()) { ignore_list_(cfg.ignore_list()), exception_list_(cfg.exception_list()) {
} }
void Directories::Config::AddIgnore(std::string filter) { void Directories::Config::AddIgnore(std::string filter) {
ignore_list_.push_back(filter); ignore_list_.push_back(filter);
} }
void Directories::Config::AddException(std::string filter) { void Directories::Config::AddException(std::string filter) {
exception_list_.push_back(filter); exception_list_.push_back(filter);
} }
bool Directories::Config::IsIgnored(std::string str) { bool Directories::Config::IsIgnored(std::string str) {
for ( auto &i : ignore_list() ) for ( auto &i : ignore_list() )
if (str.find(i, 0) != std::string::npos) if (str.find(i, 0) != std::string::npos)
return true; return true;
return false; return false;
} }
bool Directories::Config::IsException(std::string str) { bool Directories::Config::IsException(std::string str) {
for ( std::string &i : exception_list() ) for ( std::string &i : exception_list() )
if (i == str) if (i == str)
return true; return true;
return false; return false;
} }

2
juci/directories.h

@ -51,7 +51,7 @@ namespace Directories {
void open_folder(const boost::filesystem::path& dir_path); void open_folder(const boost::filesystem::path& dir_path);
void list_dirs(const boost::filesystem::path& dir_path, void list_dirs(const boost::filesystem::path& dir_path,
Gtk::TreeModel::Row &row, unsigned depth); Gtk::TreeModel::Row &row, unsigned depth);
std::string get_project_name(const boost::filesystem::path& dir_path); std::string GetCmakeVarValue(const boost::filesystem::path& dir_path, std::string command_name);
int count(const std::string path); int count(const std::string path);
// Child widgets: // Child widgets:

4
juci/window.cc

@ -50,7 +50,7 @@ Window::Window() :
[this]() { [this]() {
terminal_. terminal_.
SetFolderCommand("/home/gm/ClionProjects/testi/CM.txt"); SetFolderCommand("/home/gm/ClionProjects/testi/CM.txt");
std::string p = notebook_.directories().get_project_name("/home/gm/ClionProjects/testi"); std::string p = notebook_.directories().GetCmakeVarValue("/home/gm/ClionProjects/testi", "project");
terminal_.CompileAndRun(p); terminal_.CompileAndRun(p);
}); });
@ -61,7 +61,7 @@ Window::Window() :
[this]() { [this]() {
terminal_. terminal_.
SetFolderCommand("/home/gm/ClionProjects/testi/CM.txt"); SetFolderCommand("/home/gm/ClionProjects/testi/CM.txt");
std::string p = notebook_.directories().get_project_name("/home/gm/ClionProjects/testi"); std::string p = notebook_.directories().GetCmakeVarValue("/home/gm/ClionProjects/testi", "project");
terminal_.CompileAndRun(p); terminal_.CompileAndRun(p);
}); });

Loading…
Cancel
Save