From 0cfa6b8b846ece7cd5ca15d2831af7ba3236605a Mon Sep 17 00:00:00 2001 From: d3rrial Date: Wed, 31 Aug 2016 14:43:31 +0200 Subject: [PATCH] Implemented menu item to clean build directory --- src/menu.cc | 4 ++++ src/project.cc | 13 +++++++++++++ src/project.h | 1 + src/window.cc | 13 +++++++++++++ 4 files changed, 31 insertions(+) diff --git a/src/menu.cc b/src/menu.cc index f42a8dc..a9eccf0 100644 --- a/src/menu.cc +++ b/src/menu.cc @@ -244,6 +244,10 @@ Menu::Menu() { _Compile app.compile + + _Clean _Project + app.clean_project +
diff --git a/src/project.cc b/src/project.cc index 4decbd7..96d6c1a 100644 --- a/src/project.cc +++ b/src/project.cc @@ -147,6 +147,19 @@ void Project::Base::compile_and_run() { Info::get().print("Could not find a supported project"); } +void Project::Base::clean_project() { + auto default_build_path=build->get_default_path(); + if(default_build_path.empty() || !build->update_default()) + return; + + if(Config::get().project.clear_terminal_on_compile) + Terminal::get().clear(); + Terminal::get().print("Cleaning build directory\n"); + boost::filesystem::remove_all(default_build_path); + boost::filesystem::create_directory(default_build_path); + Terminal::get().print("Build directory cleaned!\n"); +} + std::pair Project::Base::debug_get_run_arguments() { Info::get().print("Could not find a supported project"); return {"", ""}; diff --git a/src/project.h b/src/project.h index 6d92112..e1270a1 100644 --- a/src/project.h +++ b/src/project.h @@ -43,6 +43,7 @@ namespace Project { virtual std::pair get_run_arguments(); virtual void compile(); virtual void compile_and_run(); + virtual void clean_project(); virtual std::pair debug_get_run_arguments(); virtual Gtk::Popover *debug_get_options() { return nullptr; } diff --git a/src/window.cc b/src/window.cc index 364225d..40a58f3 100644 --- a/src/window.cc +++ b/src/window.cc @@ -855,6 +855,19 @@ void Window::set_menu_actions() { Project::current->compile(); }); + menu.add_action("clean_project", [this]() { + if(Project::compiling || Project::debugging) { + Info::get().print("Compile or debug in progress"); + return; + } + + Project::current=Project::create(); + + if(Config::get().project.save_on_compile_or_run) + Project::save_files(Project::current->build->project_path); + + Project::current->clean_project(); + }); menu.add_action("run_command", [this]() { EntryBox::get().clear();