Browse Source

Cleanup of menu item activations

merge-requests/365/head
eidheim 9 years ago
parent
commit
b54774748b
  1. 14
      src/project.cc
  2. 4
      src/project.h
  3. 46
      src/window.cc
  4. 2
      src/window.h

14
src/project.cc

@ -17,6 +17,7 @@ std::unordered_map<std::string, std::string> Project::debug_run_arguments;
std::atomic<bool> Project::compiling(false); std::atomic<bool> Project::compiling(false);
std::atomic<bool> Project::debugging(false); std::atomic<bool> Project::debugging(false);
std::pair<boost::filesystem::path, std::pair<int, int> > Project::debug_stop; std::pair<boost::filesystem::path, std::pair<int, int> > Project::debug_stop;
std::string Project::debug_status;
std::unique_ptr<Project::Base> Project::current; std::unique_ptr<Project::Base> Project::current;
#ifdef JUCI_ENABLE_DEBUG #ifdef JUCI_ENABLE_DEBUG
std::unordered_map<std::string, Project::Clang::DebugOptions> Project::Clang::debug_options; std::unordered_map<std::string, Project::Clang::DebugOptions> Project::Clang::debug_options;
@ -67,20 +68,27 @@ void Project::on_save(size_t index) {
} }
} }
void Project::debug_update_status(const std::string &debug_status) { void Project::debug_update_status(const std::string &new_debug_status) {
debug_status=new_debug_status;
if(debug_status.empty()) if(debug_status.empty())
debug_status_label().set_text(""); debug_status_label().set_text("");
else else
debug_status_label().set_text("debug: "+debug_status); debug_status_label().set_text("debug: "+debug_status);
debug_activate_menu_items();
}
void Project::debug_activate_menu_items() {
auto &menu=Menu::get(); auto &menu=Menu::get();
auto view=Notebook::get().get_current_view();
menu.actions["debug_stop"]->set_enabled(!debug_status.empty()); menu.actions["debug_stop"]->set_enabled(!debug_status.empty());
menu.actions["debug_kill"]->set_enabled(!debug_status.empty()); menu.actions["debug_kill"]->set_enabled(!debug_status.empty());
menu.actions["debug_step_over"]->set_enabled(!debug_status.empty()); menu.actions["debug_step_over"]->set_enabled(!debug_status.empty());
menu.actions["debug_step_into"]->set_enabled(!debug_status.empty()); menu.actions["debug_step_into"]->set_enabled(!debug_status.empty());
menu.actions["debug_step_out"]->set_enabled(!debug_status.empty()); menu.actions["debug_step_out"]->set_enabled(!debug_status.empty());
menu.actions["debug_backtrace"]->set_enabled(!debug_status.empty()); menu.actions["debug_backtrace"]->set_enabled(!debug_status.empty() && view);
menu.actions["debug_show_variables"]->set_enabled(!debug_status.empty()); menu.actions["debug_show_variables"]->set_enabled(!debug_status.empty() && view);
menu.actions["debug_run_command"]->set_enabled(!debug_status.empty()); menu.actions["debug_run_command"]->set_enabled(!debug_status.empty());
menu.actions["debug_toggle_breakpoint"]->set_enabled(view && static_cast<bool>(view->toggle_breakpoint));
menu.actions["debug_goto_stop"]->set_enabled(!debug_status.empty()); menu.actions["debug_goto_stop"]->set_enabled(!debug_status.empty());
} }

4
src/project.h

@ -21,8 +21,10 @@ namespace Project {
extern std::atomic<bool> compiling; extern std::atomic<bool> compiling;
extern std::atomic<bool> debugging; extern std::atomic<bool> debugging;
extern std::pair<boost::filesystem::path, std::pair<int, int> > debug_stop; extern std::pair<boost::filesystem::path, std::pair<int, int> > debug_stop;
extern std::string debug_status;
void debug_update_status(const std::string &new_debug_status);
void debug_activate_menu_items();
void debug_update_stop(); void debug_update_stop();
void debug_update_status(const std::string &debug_status);
class Base { class Base {
protected: protected:

46
src/window.cc

@ -30,7 +30,7 @@ Window::Window() {
set_menu_actions(); set_menu_actions();
configure(); configure();
activate_menu_items(false); activate_menu_items();
set_default_size(Config::get().window.default_size.first, Config::get().window.default_size.second); set_default_size(Config::get().window.default_size.first, Config::get().window.default_size.second);
@ -1036,7 +1036,7 @@ void Window::set_menu_actions() {
Notebook::get().status.set_text(""); Notebook::get().status.set_text("");
Notebook::get().info.set_text(""); Notebook::get().info.set_text("");
activate_menu_items(false); activate_menu_items();
} }
} }
}); });
@ -1048,24 +1048,34 @@ void Window::set_menu_actions() {
}); });
} }
void Window::activate_menu_items(bool activate) { void Window::activate_menu_items() {
auto &menu = Menu::get(); auto &menu = Menu::get();
auto &notebook = Notebook::get(); auto view=Notebook::get().get_current_view();
menu.actions["source_indentation_auto_indent_buffer"]->set_enabled(activate ? static_cast<bool>(notebook.get_current_view()->auto_indent) : false);
menu.actions["source_find_symbol_ctags"]->set_enabled(activate); menu.actions["source_spellcheck"]->set_enabled(view);
menu.actions["source_comments_toggle"]->set_enabled(activate ? static_cast<bool>(notebook.get_current_view()->toggle_comments) : false); menu.actions["source_spellcheck_clear"]->set_enabled(view);
menu.actions["source_comments_add_documentation"]->set_enabled(activate ? static_cast<bool>(notebook.get_current_view()->add_documentation) : false); menu.actions["source_spellcheck_next_error"]->set_enabled(view);
menu.actions["source_find_documentation"]->set_enabled(activate ? static_cast<bool>(notebook.get_current_view()->get_token_data) : false); menu.actions["source_git_next_diff"]->set_enabled(view);
menu.actions["source_goto_declaration"]->set_enabled(activate ? static_cast<bool>(notebook.get_current_view()->get_declaration_location) : false); menu.actions["source_git_show_diff"]->set_enabled(view);
menu.actions["source_goto_implementation"]->set_enabled(activate ? static_cast<bool>(notebook.get_current_view()->get_implementation_locations) : false); menu.actions["source_indentation_set_buffer_tab"]->set_enabled(view);
menu.actions["source_goto_usage"]->set_enabled(activate ? static_cast<bool>(notebook.get_current_view()->get_usages) : false); menu.actions["source_goto_line"]->set_enabled(view);
menu.actions["source_goto_method"]->set_enabled(activate ? static_cast<bool>(notebook.get_current_view()->get_methods) : false); menu.actions["source_center_cursor"]->set_enabled(view);
menu.actions["source_rename"]->set_enabled(activate ? static_cast<bool>(notebook.get_current_view()->rename_similar_tokens) : false);
menu.actions["source_implement_method"]->set_enabled(activate ? static_cast<bool>(notebook.get_current_view()->get_method) : false); menu.actions["source_indentation_auto_indent_buffer"]->set_enabled(view && static_cast<bool>(view->auto_indent));
menu.actions["source_goto_next_diagnostic"]->set_enabled(activate ? static_cast<bool>(notebook.get_current_view()->goto_next_diagnostic) : false); menu.actions["source_find_symbol_ctags"]->set_enabled(view);
menu.actions["source_apply_fix_its"]->set_enabled(activate ? static_cast<bool>(notebook.get_current_view()->get_fix_its) : false); menu.actions["source_comments_toggle"]->set_enabled(view && static_cast<bool>(view->toggle_comments));
menu.actions["source_comments_add_documentation"]->set_enabled(view && static_cast<bool>(view->add_documentation));
menu.actions["source_find_documentation"]->set_enabled(view && static_cast<bool>(view->get_token_data));
menu.actions["source_goto_declaration"]->set_enabled(view && static_cast<bool>(view->get_declaration_location));
menu.actions["source_goto_implementation"]->set_enabled(view && static_cast<bool>(view->get_implementation_locations));
menu.actions["source_goto_usage"]->set_enabled(view && static_cast<bool>(view->get_usages));
menu.actions["source_goto_method"]->set_enabled(view && static_cast<bool>(view->get_methods));
menu.actions["source_rename"]->set_enabled(view && static_cast<bool>(view->rename_similar_tokens));
menu.actions["source_implement_method"]->set_enabled(view && static_cast<bool>(view->get_method));
menu.actions["source_goto_next_diagnostic"]->set_enabled(view && static_cast<bool>(view->goto_next_diagnostic));
menu.actions["source_apply_fix_its"]->set_enabled(view && static_cast<bool>(view->get_fix_its));
#ifdef JUCI_ENABLE_DEBUG #ifdef JUCI_ENABLE_DEBUG
menu.actions["debug_toggle_breakpoint"]->set_enabled(activate ? static_cast<bool>(notebook.get_current_view()->toggle_breakpoint) : false); Project::debug_activate_menu_items();
#endif #endif
} }

2
src/window.h

@ -23,7 +23,7 @@ private:
void configure(); void configure();
void set_menu_actions(); void set_menu_actions();
void activate_menu_items(bool activate=true); void activate_menu_items();
void search_and_replace_entry(); void search_and_replace_entry();
void set_tab_entry(); void set_tab_entry();
void goto_line_entry(); void goto_line_entry();

Loading…
Cancel
Save