diff --git a/src/config.cc b/src/config.cc index c2bf32f..3cfc808 100644 --- a/src/config.cc +++ b/src/config.cc @@ -5,12 +5,15 @@ #include "files.h" #include "sourcefile.h" +//TODO: add try-catch to json-get and get_child MainConfig::MainConfig(Menu &menu) : menu(menu) { find_or_create_config_files(); boost::property_tree::json_parser::read_json(Singleton::config_dir() + "config.json", cfg); GenerateSource(); GenerateKeybindings(); GenerateDirectoryFilter(); + + Singleton::Config::terminal()->make_command=cfg.get("project.make_command"); } void MainConfig::find_or_create_config_files() { diff --git a/src/files.h b/src/files.h index 8831802..464811e 100644 --- a/src/files.h +++ b/src/files.h @@ -58,6 +58,9 @@ const std::string configjson = " \"kill_last_running\": \"Escape\",\n" " \"force_kill_last_running\": \"Escape\"\n" " },\n" +" \"project\": {\n" +" \"make_command\": \"make -j 2\"\n" +" },\n" " \"directoryfilter\": {\n" " \"ignore\": [\n" " \"cmake\",\n" diff --git a/src/singletons.cc b/src/singletons.cc index ace0668..94d1a03 100644 --- a/src/singletons.cc +++ b/src/singletons.cc @@ -2,6 +2,7 @@ std::unique_ptr Singleton::Config::source_=std::unique_ptr(new Source::Config()); std::unique_ptr Singleton::Config::directories_=std::unique_ptr(new Directories::Config()); +std::unique_ptr Singleton::Config::terminal_=std::unique_ptr(new Terminal::Config()); std::unique_ptr Singleton::terminal_=std::unique_ptr(); Terminal *Singleton::terminal() { diff --git a/src/singletons.h b/src/singletons.h index e39453c..2a09fc3 100644 --- a/src/singletons.h +++ b/src/singletons.h @@ -15,9 +15,11 @@ public: public: static Source::Config *source() {return source_.get();} static Directories::Config *directories() {return directories_.get();} + static Terminal::Config *terminal() {return terminal_.get();} private: static std::unique_ptr source_; static std::unique_ptr directories_; + static std::unique_ptr terminal_; }; static std::string config_dir() { return std::string(getenv("HOME")) + "/.juci/config/"; } static std::string log_dir() { return std::string(getenv("HOME")) + "/.juci/log/"; } diff --git a/src/terminal.h b/src/terminal.h index 4e01852..838cd0d 100644 --- a/src/terminal.h +++ b/src/terminal.h @@ -11,6 +11,11 @@ class Terminal : public Gtk::TextView { public: + class Config { + public: + std::string make_command; + }; + class InProgress { public: InProgress(const std::string& start_msg); diff --git a/src/window.cc b/src/window.cc index d1e4175..1f2dc13 100644 --- a/src/window.cc +++ b/src/window.cc @@ -220,7 +220,7 @@ void Window::create_menu() { Singleton::terminal()->print("Compiling and running "+executable_path.string()+"\n"); //TODO: Windows... auto project_path=cmake.project_path; - Singleton::terminal()->async_execute("make", cmake.project_path, [this, executable_path, project_path](int exit_code){ + Singleton::terminal()->async_execute(Singleton::Config::terminal()->make_command, cmake.project_path, [this, executable_path, project_path](int exit_code){ compiling=false; if(exit_code==EXIT_SUCCESS) { compile_success(); @@ -247,7 +247,7 @@ void Window::create_menu() { compiling=true; Singleton::terminal()->print("Compiling project "+cmake.project_path.string()+"\n"); //TODO: Windows... - Singleton::terminal()->async_execute("make", cmake.project_path, [this](int exit_code){ + Singleton::terminal()->async_execute(Singleton::Config::terminal()->make_command, cmake.project_path, [this](int exit_code){ compiling=false; if(exit_code==EXIT_SUCCESS) compile_success();