Browse Source

Added option to change the make command (for instance to use more processes with -j [number]).

merge-requests/365/head
eidheim 10 years ago
parent
commit
6ecc5ba16f
  1. 3
      src/config.cc
  2. 3
      src/files.h
  3. 1
      src/singletons.cc
  4. 2
      src/singletons.h
  5. 5
      src/terminal.h
  6. 4
      src/window.cc

3
src/config.cc

@ -5,12 +5,15 @@
#include "files.h" #include "files.h"
#include "sourcefile.h" #include "sourcefile.h"
//TODO: add try-catch to json-get and get_child
MainConfig::MainConfig(Menu &menu) : menu(menu) { MainConfig::MainConfig(Menu &menu) : menu(menu) {
find_or_create_config_files(); find_or_create_config_files();
boost::property_tree::json_parser::read_json(Singleton::config_dir() + "config.json", cfg); boost::property_tree::json_parser::read_json(Singleton::config_dir() + "config.json", cfg);
GenerateSource(); GenerateSource();
GenerateKeybindings(); GenerateKeybindings();
GenerateDirectoryFilter(); GenerateDirectoryFilter();
Singleton::Config::terminal()->make_command=cfg.get<std::string>("project.make_command");
} }
void MainConfig::find_or_create_config_files() { void MainConfig::find_or_create_config_files() {

3
src/files.h

@ -58,6 +58,9 @@ const std::string configjson =
" \"kill_last_running\": \"<primary>Escape\",\n" " \"kill_last_running\": \"<primary>Escape\",\n"
" \"force_kill_last_running\": \"<primary><shift>Escape\"\n" " \"force_kill_last_running\": \"<primary><shift>Escape\"\n"
" },\n" " },\n"
" \"project\": {\n"
" \"make_command\": \"make -j 2\"\n"
" },\n"
" \"directoryfilter\": {\n" " \"directoryfilter\": {\n"
" \"ignore\": [\n" " \"ignore\": [\n"
" \"cmake\",\n" " \"cmake\",\n"

1
src/singletons.cc

@ -2,6 +2,7 @@
std::unique_ptr<Source::Config> Singleton::Config::source_=std::unique_ptr<Source::Config>(new Source::Config()); std::unique_ptr<Source::Config> Singleton::Config::source_=std::unique_ptr<Source::Config>(new Source::Config());
std::unique_ptr<Directories::Config> Singleton::Config::directories_=std::unique_ptr<Directories::Config>(new Directories::Config()); std::unique_ptr<Directories::Config> Singleton::Config::directories_=std::unique_ptr<Directories::Config>(new Directories::Config());
std::unique_ptr<Terminal::Config> Singleton::Config::terminal_=std::unique_ptr<Terminal::Config>(new Terminal::Config());
std::unique_ptr<Terminal> Singleton::terminal_=std::unique_ptr<Terminal>(); std::unique_ptr<Terminal> Singleton::terminal_=std::unique_ptr<Terminal>();
Terminal *Singleton::terminal() { Terminal *Singleton::terminal() {

2
src/singletons.h

@ -15,9 +15,11 @@ public:
public: public:
static Source::Config *source() {return source_.get();} static Source::Config *source() {return source_.get();}
static Directories::Config *directories() {return directories_.get();} static Directories::Config *directories() {return directories_.get();}
static Terminal::Config *terminal() {return terminal_.get();}
private: private:
static std::unique_ptr<Source::Config> source_; static std::unique_ptr<Source::Config> source_;
static std::unique_ptr<Directories::Config> directories_; static std::unique_ptr<Directories::Config> directories_;
static std::unique_ptr<Terminal::Config> terminal_;
}; };
static std::string config_dir() { return std::string(getenv("HOME")) + "/.juci/config/"; } static std::string config_dir() { return std::string(getenv("HOME")) + "/.juci/config/"; }
static std::string log_dir() { return std::string(getenv("HOME")) + "/.juci/log/"; } static std::string log_dir() { return std::string(getenv("HOME")) + "/.juci/log/"; }

5
src/terminal.h

@ -11,6 +11,11 @@
class Terminal : public Gtk::TextView { class Terminal : public Gtk::TextView {
public: public:
class Config {
public:
std::string make_command;
};
class InProgress { class InProgress {
public: public:
InProgress(const std::string& start_msg); InProgress(const std::string& start_msg);

4
src/window.cc

@ -220,7 +220,7 @@ void Window::create_menu() {
Singleton::terminal()->print("Compiling and running "+executable_path.string()+"\n"); Singleton::terminal()->print("Compiling and running "+executable_path.string()+"\n");
//TODO: Windows... //TODO: Windows...
auto project_path=cmake.project_path; 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; compiling=false;
if(exit_code==EXIT_SUCCESS) { if(exit_code==EXIT_SUCCESS) {
compile_success(); compile_success();
@ -247,7 +247,7 @@ void Window::create_menu() {
compiling=true; compiling=true;
Singleton::terminal()->print("Compiling project "+cmake.project_path.string()+"\n"); Singleton::terminal()->print("Compiling project "+cmake.project_path.string()+"\n");
//TODO: Windows... //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; compiling=false;
if(exit_code==EXIT_SUCCESS) if(exit_code==EXIT_SUCCESS)
compile_success(); compile_success();

Loading…
Cancel
Save