diff --git a/juci/config.cc b/juci/config.cc index 74c450f..8d54a65 100644 --- a/juci/config.cc +++ b/juci/config.cc @@ -26,7 +26,6 @@ void MainConfig::GenerateSource() { for (auto &i : extensions_json) { source_cfg_.InsertExtension(i.second.get_value()); } - DEBUG("Source cfg fetched"); } diff --git a/juci/notebook.cc b/juci/notebook.cc index 0f16e40..6992658 100644 --- a/juci/notebook.cc +++ b/juci/notebook.cc @@ -3,8 +3,8 @@ #include "logging.h" Notebook::Model::Model() { - cc_extension_ = ".cc"; - h_extension_ = ".h"; + cc_extension_ = ".cpp"; + h_extension_ = ".hpp"; scrollvalue_ = 50; } @@ -17,7 +17,6 @@ Notebook::Controller::Controller(Gtk::Window* window, Keybindings::Controller& keybindings, Source::Config& source_cfg, Directories::Config& dir_cfg) : - source_config_(source_cfg), directories_(dir_cfg), index_(0, 1) { window_ = window; @@ -25,6 +24,7 @@ Notebook::Controller::Controller(Gtk::Window* window, refClipboard_ = Gtk::Clipboard::get(); ispopup = false; view().pack1(directories_.widget(), true, true); + source_config_ = source_cfg; CreateKeybindings(keybindings); INFO("Notebook Controller Success"); } // Constructor @@ -719,13 +719,9 @@ bool Notebook::Controller::LegalExtension(std::string e) { std::transform(e.begin(), e.end(),e.begin(), ::tolower); std::vector extensions = source_config().extensiontable(); - if (find(extensions.begin(), extensions.end(), e) != extensions.end()) { DEBUG("Legal extension"); return true; - - // if(e=="c" ||e=="cc" ||e=="cpp" ||e=="cxx" || e=="c++"|| - // e=="h" ||e=="hh" ||e=="hpp" ||e=="hxx" || e=="h++"){ } DEBUG("Ilegal extension"); return false; diff --git a/juci/source.cc b/juci/source.cc index 6667450..36b2ade 100644 --- a/juci/source.cc +++ b/juci/source.cc @@ -70,7 +70,7 @@ const std::unordered_map& Source::Config::typetable() const { return typetable_; } -const std::vector& Source::Config::extensiontable() const{ +std::vector& Source::Config::extensiontable(){ return extensiontable_; } diff --git a/juci/source.h b/juci/source.h index 3bb3c12..ee7ebbf 100644 --- a/juci/source.h +++ b/juci/source.h @@ -20,7 +20,7 @@ namespace Source { Config(); const std::unordered_map& tagtable() const; const std::unordered_map& typetable() const; - const std::vector& extensiontable() const; + std::vector& extensiontable(); void SetTagTable(const std::unordered_map &tagtable); void InsertTag(const std::string &key, const std::string &value); @@ -28,10 +28,11 @@ namespace Source { &tagtable); void InsertType(const std::string &key, const std::string &value); void InsertExtension(const std::string &ext); + std::vector extensiontable_; private: std::unordered_map tagtable_; std::unordered_map typetable_; - std::vector extensiontable_; + std::string background_; }; // class Config diff --git a/juci/terminal.cc b/juci/terminal.cc index 8d65303..7984532 100644 --- a/juci/terminal.cc +++ b/juci/terminal.cc @@ -4,6 +4,18 @@ #include "logging.h" +Terminal::Config::Config() { +} +Terminal::Config::Config(Terminal::Config& original) { + for (auto it = 0; original.compile_commands().size(); ++it) { + InsertCompileCommand(original.compile_commands().at(it)); + } +} + +void Terminal::Config::InsertCompileCommand(std::string command){ + compile_commands_.push_back(command); +} + Terminal::View::View(){ scrolledwindow_.add(textview_); scrolledwindow_.set_size_request(-1,150); @@ -28,11 +40,18 @@ void Terminal::Controller::Compile(){ INFO("Terminal: Compile"); Terminal().get_buffer()->set_text(""); DEBUG("Terminal: Compile: running cmake command"); - ExecuteCommand("cmake .", "r"); - if (ExistInConsole(cmake_sucsess)){ - DEBUG("Terminal: Compile: running make command"); - ExecuteCommand("make", "r"); + std::vector commands = config().compile_commands(); + for (auto it = 0; it < commands.size(); ++it) { + ExecuteCommand(commands.at(it), "r"); + } + // ExecuteCommand("rm -rf ./.build", "r"); + // ExecuteCommand("mkdir ./.build", "r"); + // ExecuteCommand("cmake -B./build -H.", "r"); + // if (ExistInConsole(cmake_sucsess)){ + // DEBUG("Terminal: Compile: running make command"); + // ExecuteCommand("cd ./.build/; make", "r"); + // } PrintMessage("\n"); DEBUG("Terminal: Compile: compile done"); } @@ -42,7 +61,7 @@ void Terminal::Controller::Run(std::string executable) { PrintMessage("juCi++ execute: " + executable + "\n"); DEBUG("Terminal: Compile: running run command: "); DEBUG_VAR(executable); - ExecuteCommand("./"+executable, "r"); + ExecuteCommand("cd ./build/; ./"+executable, "r"); PrintMessage("\n"); } @@ -66,16 +85,18 @@ void Terminal::Controller::ExecuteCommand(std::string command, std::string mode) INFO("Terminal: ExecuteCommand"); command = folder_command_+command; DEBUG("Terminal: PrintMessage: Running command"); - DEBUG_VAR(command); - FILE* p = popen(command.c_str(), mode.c_str()); - + FILE* p = NULL; + p = popen(command.c_str(), mode.c_str()); + std::cout << "KJØRTE FINT!" << std::endl; if (p == NULL) { PrintMessage("juCi++ ERROR: Failed to run command" + command + "\n"); }else { + std::cout << "SKRIVER UT KOMMANDO RESULAT" << std::endl; char buffer[1028]; while (fgets(buffer, 1028, p) != NULL) { PrintMessage(buffer); } pclose(p); } + } diff --git a/juci/terminal.h b/juci/terminal.h index b3cdca0..340d24f 100644 --- a/juci/terminal.h +++ b/juci/terminal.h @@ -7,6 +7,16 @@ namespace Terminal { + class Config { + public: + Config (); + Config(Terminal::Config& original); + std::vector& compile_commands() {return &compile_commands_;} + void InsertCompileCommand(std::string command); + private: + std::vector compile_commands_; + }; + class View { public: View(); diff --git a/juci/window.cc b/juci/window.cc index cae5b5e..25695ce 100644 --- a/juci/window.cc +++ b/juci/window.cc @@ -50,29 +50,29 @@ Window::Window() : }); keybindings_. action_group_menu()-> - add(Gtk::Action::create("ProjectCompileAndRun", - "Compile And Run"), - Gtk::AccelKey(keybindings_.config_ - .key_map()["compile_and_run"]), - [this]() { - notebook_.OnSaveFile(); - if (running.try_lock()) { - std::thread execute([=]() { - std::string path = notebook_.CurrentPagePath(); - int pos = path.find_last_of("/\\"); - if(pos != std::string::npos) { - path.erase(path.begin()+pos,path.end()); - terminal_.SetFolderCommand(path); - } - terminal_.Compile(); - std::string executable = notebook_.directories(). - GetCmakeVarValue(path,"add_executable"); - terminal_.Run(executable); - }); - execute.detach(); - running.unlock(); - } - }); + add(Gtk::Action::create("ProjectCompileAndRun", + "Compile And Run"), + Gtk::AccelKey(keybindings_.config_ + .key_map()["compile_and_run"]), + [this]() { + notebook_.OnSaveFile(); + if (running.try_lock()) { + std::thread execute([=]() { + std::string path = notebook_.CurrentPagePath(); + int pos = path.find_last_of("/\\"); + if(pos != std::string::npos) { + path.erase(path.begin()+pos,path.end()); + terminal_.SetFolderCommand(path); + } + terminal_.Compile(); + std::string executable = notebook_.directories(). + GetCmakeVarValue(path,"add_executable"); + terminal_.Run(executable); + }); + execute.detach(); + running.unlock(); + } + }); keybindings_. action_group_menu()->