1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 22:38:13 +00:00

LibGUI: Remove Menu::try_add_action()

And fall back to the infallible add_action().
This commit is contained in:
Andreas Kling 2023-08-14 10:14:27 +02:00
parent eec328e2ab
commit f2faf2767f
51 changed files with 758 additions and 769 deletions

View file

@ -366,12 +366,12 @@ WebView::OutOfProcessWebView& MainWidget::ensure_web_view()
ErrorOr<void> MainWidget::initialize_menubar(GUI::Window& window)
{
auto file_menu = TRY(window.try_add_menu("&File"_string));
TRY(file_menu->try_add_action(*m_new_action));
TRY(file_menu->try_add_action(*m_open_action));
TRY(file_menu->try_add_action(*m_save_action));
TRY(file_menu->try_add_action(*m_save_as_action));
file_menu->add_action(*m_new_action);
file_menu->add_action(*m_open_action);
file_menu->add_action(*m_save_action);
file_menu->add_action(*m_save_as_action);
file_menu->add_separator();
TRY(file_menu->try_add_action(*m_open_folder_action));
file_menu->add_action(*m_open_folder_action);
file_menu->add_separator();
TRY(file_menu->add_recent_files_list([&](auto& action) {
@ -390,28 +390,28 @@ ErrorOr<void> MainWidget::initialize_menubar(GUI::Window& window)
if (auto result = read_file(response.value().filename(), response.value().stream()); result.is_error())
GUI::MessageBox::show(&window, "Unable to open file.\n"sv, "Error"sv, GUI::MessageBox::Type::Error);
}));
TRY(file_menu->try_add_action(GUI::CommonActions::make_quit_action([this](auto&) {
file_menu->add_action(GUI::CommonActions::make_quit_action([this](auto&) {
if (!request_close())
return;
GUI::Application::the()->quit();
})));
}));
auto edit_menu = TRY(window.try_add_menu("&Edit"_string));
TRY(edit_menu->try_add_action(m_editor->undo_action()));
TRY(edit_menu->try_add_action(m_editor->redo_action()));
edit_menu->add_action(m_editor->undo_action());
edit_menu->add_action(m_editor->redo_action());
edit_menu->add_separator();
TRY(edit_menu->try_add_action(m_editor->cut_action()));
TRY(edit_menu->try_add_action(m_editor->copy_action()));
TRY(edit_menu->try_add_action(m_editor->paste_action()));
edit_menu->add_action(m_editor->cut_action());
edit_menu->add_action(m_editor->copy_action());
edit_menu->add_action(m_editor->paste_action());
edit_menu->add_separator();
TRY(edit_menu->try_add_action(m_editor->insert_emoji_action()));
TRY(edit_menu->try_add_action(*m_vim_emulation_setting_action));
edit_menu->add_action(m_editor->insert_emoji_action());
edit_menu->add_action(*m_vim_emulation_setting_action);
edit_menu->add_separator();
TRY(edit_menu->try_add_action(*m_find_replace_action));
TRY(edit_menu->try_add_action(*m_find_next_action));
TRY(edit_menu->try_add_action(*m_find_previous_action));
TRY(edit_menu->try_add_action(*m_replace_action));
TRY(edit_menu->try_add_action(*m_replace_all_action));
edit_menu->add_action(*m_find_replace_action);
edit_menu->add_action(*m_find_next_action);
edit_menu->add_action(*m_find_previous_action);
edit_menu->add_action(*m_replace_action);
edit_menu->add_action(*m_replace_all_action);
m_no_preview_action = GUI::Action::create_checkable(
"&No Preview", [this](auto&) {
@ -462,13 +462,13 @@ ErrorOr<void> MainWidget::initialize_menubar(GUI::Window& window)
auto view_menu = TRY(window.try_add_menu("&View"_string));
auto layout_menu = view_menu->add_submenu("&Layout"_string);
TRY(layout_menu->try_add_action(*m_layout_toolbar_action));
TRY(layout_menu->try_add_action(*m_layout_statusbar_action));
TRY(layout_menu->try_add_action(*m_layout_ruler_action));
layout_menu->add_action(*m_layout_toolbar_action);
layout_menu->add_action(*m_layout_statusbar_action);
layout_menu->add_action(*m_layout_ruler_action);
view_menu->add_separator();
TRY(view_menu->try_add_action(GUI::Action::create("Change &Font...", TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/app-font-editor.png"sv)),
view_menu->add_action(GUI::Action::create("Change &Font...", TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/app-font-editor.png"sv)),
[&](auto&) {
auto picker = GUI::FontPicker::construct(&window, &m_editor->font(), false);
if (picker->exec() == GUI::Dialog::ExecResult::OK) {
@ -476,7 +476,7 @@ ErrorOr<void> MainWidget::initialize_menubar(GUI::Window& window)
m_editor->set_font(picker->font());
Config::write_string("TextEditor"sv, "Text"sv, "Font"sv, picker->font()->qualified_name());
}
})));
}));
view_menu->add_separator();
@ -499,9 +499,9 @@ ErrorOr<void> MainWidget::initialize_menubar(GUI::Window& window)
m_wrapping_mode_actions.add_action(*m_wrap_anywhere_action);
m_wrapping_mode_actions.add_action(*m_wrap_at_words_action);
TRY(wrapping_mode_menu->try_add_action(*m_no_wrapping_action));
TRY(wrapping_mode_menu->try_add_action(*m_wrap_anywhere_action));
TRY(wrapping_mode_menu->try_add_action(*m_wrap_at_words_action));
wrapping_mode_menu->add_action(*m_no_wrapping_action);
wrapping_mode_menu->add_action(*m_wrap_anywhere_action);
wrapping_mode_menu->add_action(*m_wrap_at_words_action);
auto word_wrap = Config::read_string("TextEditor"sv, "View"sv, "WrappingMode"sv, "Words"sv);
if (word_wrap == "None") {
@ -539,11 +539,11 @@ ErrorOr<void> MainWidget::initialize_menubar(GUI::Window& window)
m_soft_tab_width_actions.add_action(*m_soft_tab_8_width_action);
m_soft_tab_width_actions.add_action(*m_soft_tab_16_width_action);
TRY(soft_tab_width_menu->try_add_action(*m_soft_tab_1_width_action));
TRY(soft_tab_width_menu->try_add_action(*m_soft_tab_2_width_action));
TRY(soft_tab_width_menu->try_add_action(*m_soft_tab_4_width_action));
TRY(soft_tab_width_menu->try_add_action(*m_soft_tab_8_width_action));
TRY(soft_tab_width_menu->try_add_action(*m_soft_tab_16_width_action));
soft_tab_width_menu->add_action(*m_soft_tab_1_width_action);
soft_tab_width_menu->add_action(*m_soft_tab_2_width_action);
soft_tab_width_menu->add_action(*m_soft_tab_4_width_action);
soft_tab_width_menu->add_action(*m_soft_tab_8_width_action);
soft_tab_width_menu->add_action(*m_soft_tab_16_width_action);
m_soft_tab_4_width_action->set_checked(true);
@ -560,8 +560,8 @@ ErrorOr<void> MainWidget::initialize_menubar(GUI::Window& window)
m_visualize_trailing_whitespace_action->set_status_tip("Visualize trailing whitespace"_string);
m_visualize_leading_whitespace_action->set_status_tip("Visualize leading whitespace"_string);
TRY(view_menu->try_add_action(*m_visualize_trailing_whitespace_action));
TRY(view_menu->try_add_action(*m_visualize_leading_whitespace_action));
view_menu->add_action(*m_visualize_trailing_whitespace_action);
view_menu->add_action(*m_visualize_leading_whitespace_action);
m_cursor_line_highlighting_action = GUI::Action::create_checkable("L&ine Highlighting", [&](auto&) {
m_editor->set_cursor_line_highlighting(m_cursor_line_highlighting_action->is_checked());
@ -570,7 +570,7 @@ ErrorOr<void> MainWidget::initialize_menubar(GUI::Window& window)
m_cursor_line_highlighting_action->set_checked(true);
m_cursor_line_highlighting_action->set_status_tip("Highlight the current line"_string);
TRY(view_menu->try_add_action(*m_cursor_line_highlighting_action));
view_menu->add_action(*m_cursor_line_highlighting_action);
m_relative_line_number_action = GUI::Action::create_checkable("R&elative Line Number", [&](auto& action) {
m_editor->set_relative_line_number(action.is_checked());
@ -583,12 +583,12 @@ ErrorOr<void> MainWidget::initialize_menubar(GUI::Window& window)
m_relative_line_number_action->set_status_tip("Set relative line number"_string);
TRY(view_menu->try_add_action(*m_relative_line_number_action));
view_menu->add_action(*m_relative_line_number_action);
view_menu->add_separator();
TRY(view_menu->try_add_action(*m_no_preview_action));
TRY(view_menu->try_add_action(*m_markdown_preview_action));
TRY(view_menu->try_add_action(*m_html_preview_action));
view_menu->add_action(*m_no_preview_action);
view_menu->add_action(*m_markdown_preview_action);
view_menu->add_action(*m_html_preview_action);
m_no_preview_action->set_checked(true);
view_menu->add_separator();
@ -603,127 +603,127 @@ ErrorOr<void> MainWidget::initialize_menubar(GUI::Window& window)
m_plain_text_highlight->set_checked(true);
m_statusbar->set_text(1, "Plain Text"_string);
syntax_actions.add_action(*m_plain_text_highlight);
TRY(syntax_menu->try_add_action(*m_plain_text_highlight));
syntax_menu->add_action(*m_plain_text_highlight);
m_cpp_highlight = GUI::Action::create_checkable("&C++", [&](auto&) {
m_editor->set_syntax_highlighter(make<Cpp::SyntaxHighlighter>());
m_editor->update();
});
syntax_actions.add_action(*m_cpp_highlight);
TRY(syntax_menu->try_add_action(*m_cpp_highlight));
syntax_menu->add_action(*m_cpp_highlight);
m_cmake_highlight = GUI::Action::create_checkable("C&Make", [&](auto&) {
m_editor->set_syntax_highlighter(make<CMake::SyntaxHighlighter>());
m_editor->update();
});
syntax_actions.add_action(*m_cmake_highlight);
TRY(syntax_menu->try_add_action(*m_cmake_highlight));
syntax_menu->add_action(*m_cmake_highlight);
m_cmakecache_highlight = GUI::Action::create_checkable("CM&akeCache", [&](auto&) {
m_editor->set_syntax_highlighter(make<CMake::Cache::SyntaxHighlighter>());
m_editor->update();
});
syntax_actions.add_action(*m_cmakecache_highlight);
TRY(syntax_menu->try_add_action(*m_cmakecache_highlight));
syntax_menu->add_action(*m_cmakecache_highlight);
m_js_highlight = GUI::Action::create_checkable("&JavaScript", [&](auto&) {
m_editor->set_syntax_highlighter(make<JS::SyntaxHighlighter>());
m_editor->update();
});
syntax_actions.add_action(*m_js_highlight);
TRY(syntax_menu->try_add_action(*m_js_highlight));
syntax_menu->add_action(*m_js_highlight);
m_css_highlight = GUI::Action::create_checkable("C&SS", [&](auto&) {
m_editor->set_syntax_highlighter(make<Web::CSS::SyntaxHighlighter>());
m_editor->update();
});
syntax_actions.add_action(*m_css_highlight);
TRY(syntax_menu->try_add_action(*m_css_highlight));
syntax_menu->add_action(*m_css_highlight);
m_html_highlight = GUI::Action::create_checkable("&HTML File", [&](auto&) {
m_editor->set_syntax_highlighter(make<Web::HTML::SyntaxHighlighter>());
m_editor->update();
});
syntax_actions.add_action(*m_html_highlight);
TRY(syntax_menu->try_add_action(*m_html_highlight));
syntax_menu->add_action(*m_html_highlight);
m_git_highlight = GUI::Action::create_checkable("Gi&t Commit", [&](auto&) {
m_editor->set_syntax_highlighter(make<GUI::GitCommitSyntaxHighlighter>());
m_editor->update();
});
syntax_actions.add_action(*m_git_highlight);
TRY(syntax_menu->try_add_action(*m_git_highlight));
syntax_menu->add_action(*m_git_highlight);
m_gml_highlight = GUI::Action::create_checkable("&GML", [&](auto&) {
m_editor->set_syntax_highlighter(make<GUI::GML::SyntaxHighlighter>());
m_editor->update();
});
syntax_actions.add_action(*m_gml_highlight);
TRY(syntax_menu->try_add_action(*m_gml_highlight));
syntax_menu->add_action(*m_gml_highlight);
m_ini_highlight = GUI::Action::create_checkable("&INI File", [&](auto&) {
m_editor->set_syntax_highlighter(make<GUI::IniSyntaxHighlighter>());
m_editor->update();
});
syntax_actions.add_action(*m_ini_highlight);
TRY(syntax_menu->try_add_action(*m_ini_highlight));
syntax_menu->add_action(*m_ini_highlight);
m_markdown_highlight = GUI::Action::create_checkable("Ma&rkdown", [&](auto&) {
m_editor->set_syntax_highlighter(make<Markdown::SyntaxHighlighter>());
m_editor->update();
});
syntax_actions.add_action(*m_markdown_highlight);
TRY(syntax_menu->try_add_action(*m_markdown_highlight));
syntax_menu->add_action(*m_markdown_highlight);
m_shell_highlight = GUI::Action::create_checkable("Sh&ell File", [&](auto&) {
m_editor->set_syntax_highlighter(make<Shell::SyntaxHighlighter>());
m_editor->update();
});
syntax_actions.add_action(*m_shell_highlight);
TRY(syntax_menu->try_add_action(*m_shell_highlight));
syntax_menu->add_action(*m_shell_highlight);
m_sql_highlight = GUI::Action::create_checkable("S&QL File", [&](auto&) {
m_editor->set_syntax_highlighter(make<SQL::AST::SyntaxHighlighter>());
m_editor->update();
});
syntax_actions.add_action(*m_sql_highlight);
TRY(syntax_menu->try_add_action(*m_sql_highlight));
syntax_menu->add_action(*m_sql_highlight);
auto help_menu = TRY(window.try_add_menu("&Help"_string));
TRY(help_menu->try_add_action(GUI::CommonActions::make_command_palette_action(&window)));
TRY(help_menu->try_add_action(GUI::CommonActions::make_help_action([](auto&) {
help_menu->add_action(GUI::CommonActions::make_command_palette_action(&window));
help_menu->add_action(GUI::CommonActions::make_help_action([](auto&) {
Desktop::Launcher::open(URL::create_with_file_scheme("/usr/share/man/man1/Applications/TextEditor.md"), "/bin/Help");
})));
TRY(help_menu->try_add_action(GUI::CommonActions::make_about_action("Text Editor", GUI::Icon::default_icon("app-text-editor"sv), &window)));
}));
help_menu->add_action(GUI::CommonActions::make_about_action("Text Editor", GUI::Icon::default_icon("app-text-editor"sv), &window));
auto wrapping_statusbar_menu = m_line_column_statusbar_menu->add_submenu("&Wrapping Mode"_string);
TRY(wrapping_statusbar_menu->try_add_action(*m_no_wrapping_action));
TRY(wrapping_statusbar_menu->try_add_action(*m_wrap_anywhere_action));
TRY(wrapping_statusbar_menu->try_add_action(*m_wrap_at_words_action));
wrapping_statusbar_menu->add_action(*m_no_wrapping_action);
wrapping_statusbar_menu->add_action(*m_wrap_anywhere_action);
wrapping_statusbar_menu->add_action(*m_wrap_at_words_action);
auto tab_width_statusbar_menu = m_line_column_statusbar_menu->add_submenu("&Tab Width"_string);
TRY(tab_width_statusbar_menu->try_add_action(*m_soft_tab_1_width_action));
TRY(tab_width_statusbar_menu->try_add_action(*m_soft_tab_2_width_action));
TRY(tab_width_statusbar_menu->try_add_action(*m_soft_tab_4_width_action));
TRY(tab_width_statusbar_menu->try_add_action(*m_soft_tab_8_width_action));
TRY(tab_width_statusbar_menu->try_add_action(*m_soft_tab_16_width_action));
tab_width_statusbar_menu->add_action(*m_soft_tab_1_width_action);
tab_width_statusbar_menu->add_action(*m_soft_tab_2_width_action);
tab_width_statusbar_menu->add_action(*m_soft_tab_4_width_action);
tab_width_statusbar_menu->add_action(*m_soft_tab_8_width_action);
tab_width_statusbar_menu->add_action(*m_soft_tab_16_width_action);
m_line_column_statusbar_menu->add_separator();
TRY(m_line_column_statusbar_menu->try_add_action(*m_cursor_line_highlighting_action));
m_line_column_statusbar_menu->add_action(*m_cursor_line_highlighting_action);
TRY(m_syntax_statusbar_menu->try_add_action(*m_plain_text_highlight));
TRY(m_syntax_statusbar_menu->try_add_action(*m_cpp_highlight));
TRY(m_syntax_statusbar_menu->try_add_action(*m_cmake_highlight));
TRY(m_syntax_statusbar_menu->try_add_action(*m_cmakecache_highlight));
TRY(m_syntax_statusbar_menu->try_add_action(*m_css_highlight));
TRY(m_syntax_statusbar_menu->try_add_action(*m_git_highlight));
TRY(m_syntax_statusbar_menu->try_add_action(*m_gml_highlight));
TRY(m_syntax_statusbar_menu->try_add_action(*m_html_highlight));
TRY(m_syntax_statusbar_menu->try_add_action(*m_ini_highlight));
TRY(m_syntax_statusbar_menu->try_add_action(*m_js_highlight));
TRY(m_syntax_statusbar_menu->try_add_action(*m_markdown_highlight));
TRY(m_syntax_statusbar_menu->try_add_action(*m_shell_highlight));
TRY(m_syntax_statusbar_menu->try_add_action(*m_sql_highlight));
m_syntax_statusbar_menu->add_action(*m_plain_text_highlight);
m_syntax_statusbar_menu->add_action(*m_cpp_highlight);
m_syntax_statusbar_menu->add_action(*m_cmake_highlight);
m_syntax_statusbar_menu->add_action(*m_cmakecache_highlight);
m_syntax_statusbar_menu->add_action(*m_css_highlight);
m_syntax_statusbar_menu->add_action(*m_git_highlight);
m_syntax_statusbar_menu->add_action(*m_gml_highlight);
m_syntax_statusbar_menu->add_action(*m_html_highlight);
m_syntax_statusbar_menu->add_action(*m_ini_highlight);
m_syntax_statusbar_menu->add_action(*m_js_highlight);
m_syntax_statusbar_menu->add_action(*m_markdown_highlight);
m_syntax_statusbar_menu->add_action(*m_shell_highlight);
m_syntax_statusbar_menu->add_action(*m_sql_highlight);
return {};
}