1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-28 23:07:35 +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

@ -167,42 +167,42 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
auto game_menu = TRY(window->try_add_menu("&Game"_string));
TRY(game_menu->try_add_action(GUI::Action::create("&New Game", { Mod_None, Key_F2 }, TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/reload.png"sv)), [&](auto&) {
game_menu->add_action(GUI::Action::create("&New Game", { Mod_None, Key_F2 }, TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/reload.png"sv)), [&](auto&) {
start_a_new_game();
})));
}));
TRY(game_menu->try_add_action(GUI::CommonActions::make_undo_action([&](auto&) {
game_menu->add_action(GUI::CommonActions::make_undo_action([&](auto&) {
if (undo_stack.is_empty())
return;
redo_stack.append(game);
game = undo_stack.take_last();
update();
})));
}));
TRY(game_menu->try_add_action(GUI::CommonActions::make_redo_action([&](auto&) {
game_menu->add_action(GUI::CommonActions::make_redo_action([&](auto&) {
if (redo_stack.is_empty())
return;
undo_stack.append(game);
game = redo_stack.take_last();
update();
})));
}));
game_menu->add_separator();
TRY(game_menu->try_add_action(GUI::Action::create("&Settings", TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/settings.png"sv)), [&](auto&) {
game_menu->add_action(GUI::Action::create("&Settings", TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/settings.png"sv)), [&](auto&) {
change_settings();
})));
}));
game_menu->add_separator();
TRY(game_menu->try_add_action(GUI::CommonActions::make_quit_action([](auto&) {
game_menu->add_action(GUI::CommonActions::make_quit_action([](auto&) {
GUI::Application::the()->quit();
})));
}));
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/man6/2048.md"), "/bin/Help");
})));
TRY(help_menu->try_add_action(GUI::CommonActions::make_about_action("2048", app_icon, window)));
}));
help_menu->add_action(GUI::CommonActions::make_about_action("2048", app_icon, window));
window->show();

View file

@ -53,12 +53,12 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
auto game_menu = TRY(window->try_add_menu("&Game"_string));
TRY(game_menu->try_add_action(GUI::Action::create("&New Game", { Mod_None, Key_F2 }, TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/reload.png"sv)), [&](auto&) {
game_menu->add_action(GUI::Action::create("&New Game", { Mod_None, Key_F2 }, TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/reload.png"sv)), [&](auto&) {
game->reset();
})));
TRY(game_menu->try_add_action(GUI::Action::create("Toggle &Pause", { Mod_None, Key_P }, [&](auto&) {
}));
game_menu->add_action(GUI::Action::create("Toggle &Pause", { Mod_None, Key_P }, [&](auto&) {
game->toggle_pause();
})));
}));
auto show_shadow_piece_action = TRY(GUI::Action::try_create_checkable("Show Shadow Piece", GUI::Shortcut {}, [&](auto& action) {
game->set_show_shadow_hint(action.is_checked());
@ -67,18 +67,18 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
game->set_show_shadow_hint(Config::read_bool(app_name, app_name, "ShowShadowPiece"sv, true));
show_shadow_piece_action->set_checked(game->show_shadow_hint());
TRY(game_menu->try_add_action(show_shadow_piece_action));
game_menu->add_action(show_shadow_piece_action);
game_menu->add_separator();
TRY(game_menu->try_add_action(GUI::CommonActions::make_quit_action([](auto&) {
game_menu->add_action(GUI::CommonActions::make_quit_action([](auto&) {
GUI::Application::the()->quit();
})));
}));
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([&man_file](auto&) {
help_menu->add_action(GUI::CommonActions::make_command_palette_action(window));
help_menu->add_action(GUI::CommonActions::make_help_action([&man_file](auto&) {
Desktop::Launcher::open(URL::create_with_file_scheme(man_file), "/bin/Help");
})));
TRY(help_menu->try_add_action(GUI::CommonActions::make_about_action(title, app_icon, window)));
}));
help_menu->add_action(GUI::CommonActions::make_about_action(title, app_icon, window));
window->show();

View file

@ -91,15 +91,15 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
auto game_menu = TRY(window->try_add_menu("&Game"_string));
TRY(game_menu->try_add_action(GUI::Action::create("&Resign", { Mod_None, Key_F3 }, [&](auto&) {
game_menu->add_action(GUI::Action::create("&Resign", { Mod_None, Key_F3 }, [&](auto&) {
widget->resign();
})));
TRY(game_menu->try_add_action(GUI::Action::create("&Flip Board", { Mod_Ctrl, Key_F }, [&](auto&) {
}));
game_menu->add_action(GUI::Action::create("&Flip Board", { Mod_Ctrl, Key_F }, [&](auto&) {
widget->flip_board();
})));
}));
game_menu->add_separator();
TRY(game_menu->try_add_action(GUI::Action::create("&Import PGN...", { Mod_Ctrl, Key_O }, [&](auto&) {
game_menu->add_action(GUI::Action::create("&Import PGN...", { Mod_Ctrl, Key_O }, [&](auto&) {
FileSystemAccessClient::OpenFileOptions options {
.allowed_file_types = Vector {
GUI::FileTypeFilter { "PGN Files", { { "pgn" } } },
@ -114,8 +114,8 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
dbgln("Failed to import PGN: {}", maybe_error.release_error());
else
dbgln("Imported PGN file from {}", result.value().filename());
})));
TRY(game_menu->try_add_action(GUI::Action::create("&Export PGN...", { Mod_Ctrl, Key_S }, [&](auto&) {
}));
game_menu->add_action(GUI::Action::create("&Export PGN...", { Mod_Ctrl, Key_S }, [&](auto&) {
auto result = FileSystemAccessClient::Client::the().save_file(window, "Untitled", "pgn");
if (result.is_error())
return;
@ -124,20 +124,20 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
dbgln("Failed to export PGN: {}", maybe_error.release_error());
else
dbgln("Exported PGN file to {}", result.value().filename());
})));
TRY(game_menu->try_add_action(GUI::Action::create("&Copy FEN", { Mod_Ctrl, Key_C }, [&](auto&) {
}));
game_menu->add_action(GUI::Action::create("&Copy FEN", { Mod_Ctrl, Key_C }, [&](auto&) {
GUI::Clipboard::the().set_data(widget->get_fen().release_value_but_fixme_should_propagate_errors().bytes());
GUI::MessageBox::show(window, "Board state copied to clipboard as FEN."sv, "Copy FEN"sv, GUI::MessageBox::Type::Information);
})));
}));
game_menu->add_separator();
TRY(game_menu->try_add_action(GUI::Action::create("&New Game", { Mod_None, Key_F2 }, TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/reload.png"sv)), [&](auto&) {
game_menu->add_action(GUI::Action::create("&New Game", { Mod_None, Key_F2 }, TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/reload.png"sv)), [&](auto&) {
if (widget->board().game_result() == Chess::Board::Result::NotFinished) {
if (widget->resign() < 0)
return;
}
widget->reset();
})));
}));
game_menu->add_separator();
auto settings_action = GUI::Action::create(
@ -146,7 +146,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
},
window);
settings_action->set_status_tip("Open the Game Settings for Chess"_string);
TRY(game_menu->try_add_action(settings_action));
game_menu->add_action(settings_action);
auto show_available_moves_action = GUI::Action::create_checkable("Show Available Moves", [&](auto& action) {
widget->set_show_available_moves(action.is_checked());
@ -154,12 +154,12 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
Config::write_bool("Games"sv, "Chess"sv, "ShowAvailableMoves"sv, action.is_checked());
});
show_available_moves_action->set_checked(widget->show_available_moves());
TRY(game_menu->try_add_action(show_available_moves_action));
game_menu->add_action(show_available_moves_action);
game_menu->add_separator();
TRY(game_menu->try_add_action(GUI::CommonActions::make_quit_action([](auto&) {
game_menu->add_action(GUI::CommonActions::make_quit_action([](auto&) {
GUI::Application::the()->quit();
})));
}));
auto engine_menu = TRY(window->try_add_menu("&Engine"_string));
@ -171,7 +171,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
});
human_engine_checkbox->set_checked(true);
engines_action_group.add_action(human_engine_checkbox);
TRY(engine_submenu->try_add_action(human_engine_checkbox));
engine_submenu->add_action(human_engine_checkbox);
for (auto const& engine : engines) {
auto action = GUI::Action::create_checkable(engine.name, [&](auto&) {
@ -190,15 +190,15 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
widget->input_engine_move();
});
engines_action_group.add_action(*action);
TRY(engine_submenu->try_add_action(*action));
engine_submenu->add_action(*action);
}
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/man6/Chess.md"), "/bin/Help");
})));
TRY(help_menu->try_add_action(GUI::CommonActions::make_about_action("Chess", app_icon, window)));
}));
help_menu->add_action(GUI::CommonActions::make_about_action("Chess", app_icon, window));
window->show();
widget->reset();

View file

@ -52,20 +52,20 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
auto game_menu = TRY(window->try_add_menu("&Game"_string));
TRY(game_menu->try_add_action(GUI::Action::create("&New Game", { Mod_None, Key_F2 }, TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/reload.png"sv)), [&](auto&) {
game_menu->add_action(GUI::Action::create("&New Game", { Mod_None, Key_F2 }, TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/reload.png"sv)), [&](auto&) {
game->reset();
})));
}));
game_menu->add_separator();
TRY(game_menu->try_add_action(GUI::CommonActions::make_quit_action([](auto&) {
game_menu->add_action(GUI::CommonActions::make_quit_action([](auto&) {
GUI::Application::the()->quit();
})));
}));
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([&man_file](auto&) {
help_menu->add_action(GUI::CommonActions::make_command_palette_action(window));
help_menu->add_action(GUI::CommonActions::make_help_action([&man_file](auto&) {
Desktop::Launcher::open(URL::create_with_file_scheme(man_file), "/bin/Help");
})));
TRY(help_menu->try_add_action(GUI::CommonActions::make_about_action(title, app_icon, window)));
}));
help_menu->add_action(GUI::CommonActions::make_about_action(title, app_icon, window));
window->show();

View file

@ -56,16 +56,16 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
};
auto game_menu = TRY(window->try_add_menu("&Game"_string));
TRY(game_menu->try_add_action(GUI::CommonActions::make_quit_action([](auto&) {
game_menu->add_action(GUI::CommonActions::make_quit_action([](auto&) {
GUI::Application::the()->quit();
})));
}));
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/man6/FlappyBug.md"), "/bin/Help");
})));
TRY(help_menu->try_add_action(GUI::CommonActions::make_about_action("Flappy Bug", app_icon, window)));
}));
help_menu->add_action(GUI::CommonActions::make_about_action("Flappy Bug", app_icon, window));
window->show();

View file

@ -166,26 +166,26 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
auto game_menu = TRY(window->try_add_menu("&Game"_string));
TRY(game_menu->try_add_action(GUI::Action::create("&New Game", { Mod_None, Key_F2 }, TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/reload.png"sv)), [&](auto&) {
game_menu->add_action(GUI::Action::create("&New Game", { Mod_None, Key_F2 }, TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/reload.png"sv)), [&](auto&) {
start_a_new_game();
})));
}));
game_menu->add_separator();
TRY(game_menu->try_add_action(GUI::Action::create("&Settings", TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/settings.png"sv)), [&](auto&) {
game_menu->add_action(GUI::Action::create("&Settings", TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/settings.png"sv)), [&](auto&) {
change_settings();
})));
}));
game_menu->add_separator();
TRY(game_menu->try_add_action(GUI::CommonActions::make_quit_action([](auto&) {
game_menu->add_action(GUI::CommonActions::make_quit_action([](auto&) {
GUI::Application::the()->quit();
})));
}));
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/man6/Flood.md"), "/bin/Help");
})));
TRY(help_menu->try_add_action(GUI::CommonActions::make_about_action("Flood", app_icon, window)));
}));
help_menu->add_action(GUI::CommonActions::make_about_action("Flood", app_icon, window));
window->show();

View file

@ -134,22 +134,22 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
auto game_menu = TRY(window->try_add_menu("&Game"_string));
TRY(game_menu->try_add_action(clear_board_action));
TRY(game_menu->try_add_action(randomize_cells_action));
game_menu->add_action(clear_board_action);
game_menu->add_action(randomize_cells_action);
game_menu->add_separator();
TRY(game_menu->try_add_action(toggle_running_action));
TRY(game_menu->try_add_action(run_one_generation_action));
game_menu->add_action(toggle_running_action);
game_menu->add_action(run_one_generation_action);
game_menu->add_separator();
TRY(game_menu->try_add_action(GUI::CommonActions::make_quit_action([](auto&) {
game_menu->add_action(GUI::CommonActions::make_quit_action([](auto&) {
GUI::Application::the()->quit();
})));
}));
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/man6/GameOfLife.md"), "/bin/Help");
})));
TRY(help_menu->try_add_action(GUI::CommonActions::make_about_action("Game of Life", app_icon, window)));
}));
help_menu->add_action(GUI::CommonActions::make_about_action("Game of Life", app_icon, window));
board_widget->on_running_state_change = [&]() {
if (board_widget->is_running()) {

View file

@ -87,23 +87,23 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
auto game_menu = TRY(window->try_add_menu("&Game"_string));
TRY(game_menu->try_add_action(GUI::Action::create("&New Game", { Mod_None, Key_F2 }, TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/reload.png"sv)), [&](auto&) {
game_menu->add_action(GUI::Action::create("&New Game", { Mod_None, Key_F2 }, TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/reload.png"sv)), [&](auto&) {
game.setup(player_name);
})));
}));
game_menu->add_separator();
TRY(game_menu->try_add_action(TRY(Cards::make_cards_settings_action(window))));
TRY(game_menu->try_add_action(GUI::Action::create("&Settings", TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/settings.png"sv)), [&](auto&) {
game_menu->add_action(TRY(Cards::make_cards_settings_action(window)));
game_menu->add_action(GUI::Action::create("&Settings", TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/settings.png"sv)), [&](auto&) {
change_settings();
})));
}));
game_menu->add_separator();
TRY(game_menu->try_add_action(GUI::CommonActions::make_quit_action([&](auto&) { app->quit(); })));
game_menu->add_action(GUI::CommonActions::make_quit_action([&](auto&) { app->quit(); }));
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/man6/Hearts.md"), "/bin/Help");
})));
TRY(help_menu->try_add_action(GUI::CommonActions::make_about_action("Hearts", app_icon, window)));
}));
help_menu->add_action(GUI::CommonActions::make_about_action("Hearts", app_icon, window));
window->set_resizable(false);
window->resize(Hearts::Game::width, Hearts::Game::height + statusbar.max_height().as_int());

View file

@ -68,33 +68,33 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
auto game_menu = TRY(window->try_add_menu("&Game"_string));
TRY(game_menu->try_add_action(GUI::Action::create("&New Game", { Mod_None, Key_F2 }, [&](auto&) {
game_menu->add_action(GUI::Action::create("&New Game", { Mod_None, Key_F2 }, [&](auto&) {
game.reset();
})));
}));
game_menu->add_separator();
TRY(game_menu->try_add_action(GUI::CommonActions::make_quit_action([](auto&) {
game_menu->add_action(GUI::CommonActions::make_quit_action([](auto&) {
GUI::Application::the()->quit();
})));
}));
auto settings_menu = TRY(window->try_add_menu("&Settings"_string));
TRY(settings_menu->try_add_action(GUI::Action::create("Set &Word Length...", [&](auto&) {
settings_menu->add_action(GUI::Action::create("Set &Word Length...", [&](auto&) {
auto word_length = Config::read_i32("MasterWord"sv, ""sv, "word_length"sv, 5);
auto result = GUI::InputBox::show_numeric(window, word_length, shortest_word, longest_word, "Word Length"sv);
if (!result.is_error() && result.value() == GUI::InputBox::ExecResult::OK) {
Config::write_i32("MasterWord"sv, ""sv, "word_length"sv, word_length);
game.set_word_length(word_length);
}
})));
TRY(settings_menu->try_add_action(GUI::Action::create("Set &Number of Guesses...", [&](auto&) {
}));
settings_menu->add_action(GUI::Action::create("Set &Number of Guesses...", [&](auto&) {
auto max_guesses = Config::read_i32("MasterWord"sv, ""sv, "max_guesses"sv, 5);
auto result = GUI::InputBox::show_numeric(window, max_guesses, 1, 20, "Number of Guesses"sv);
if (!result.is_error() && result.value() == GUI::InputBox::ExecResult::OK) {
Config::write_i32("MasterWord"sv, ""sv, "max_guesses"sv, max_guesses);
game.set_max_guesses(max_guesses);
}
})));
}));
auto toggle_check_guesses = GUI::Action::create_checkable("Check &Guesses in Dictionary", [&](auto& action) {
auto checked = action.is_checked();
@ -102,7 +102,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
Config::write_bool("MasterWord"sv, ""sv, "check_guesses_in_dictionary"sv, checked);
});
toggle_check_guesses->set_checked(game.is_checking_guesses());
TRY(settings_menu->try_add_action(toggle_check_guesses));
settings_menu->add_action(toggle_check_guesses);
auto theme_menu = TRY(window->try_add_menu("&Theme"_string));
auto system_theme_action = GUI::Action::create("&System", [&](auto&) {
@ -111,7 +111,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
});
system_theme_action->set_checkable(true);
system_theme_action->set_checked(use_system_theme);
TRY(theme_menu->try_add_action(system_theme_action));
theme_menu->add_action(system_theme_action);
auto wordle_theme_action = GUI::Action::create("&Wordle", [&](auto&) {
game.set_use_system_theme(false);
@ -119,7 +119,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
});
wordle_theme_action->set_checkable(true);
wordle_theme_action->set_checked(!use_system_theme);
TRY(theme_menu->try_add_action(wordle_theme_action));
theme_menu->add_action(wordle_theme_action);
GUI::ActionGroup theme_actions;
theme_actions.set_exclusive(true);
@ -128,11 +128,11 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
theme_actions.add_action(wordle_theme_action);
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/man6/MasterWord.md"), "/bin/Help");
})));
TRY(help_menu->try_add_action(GUI::CommonActions::make_about_action("MasterWord", app_icon, window)));
}));
help_menu->add_action(GUI::CommonActions::make_about_action("MasterWord", app_icon, window));
game.on_message = [&](auto message) {
if (!message.has_value())

View file

@ -60,9 +60,9 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
auto game_menu = TRY(window->try_add_menu("&Game"_string));
TRY(game_menu->try_add_action(GUI::Action::create("&New Game", { Mod_None, Key_F2 }, TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/reload.png"sv)), [&](auto&) {
game_menu->add_action(GUI::Action::create("&New Game", { Mod_None, Key_F2 }, TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/reload.png"sv)), [&](auto&) {
field->reset();
})));
}));
game_menu->add_separator();
@ -71,12 +71,12 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
});
chord_toggler_action->set_checked(field->is_single_chording());
TRY(game_menu->try_add_action(*chord_toggler_action));
game_menu->add_action(*chord_toggler_action);
game_menu->add_separator();
TRY(game_menu->try_add_action(GUI::CommonActions::make_quit_action([](auto&) {
game_menu->add_action(GUI::CommonActions::make_quit_action([](auto&) {
GUI::Application::the()->quit();
})));
}));
auto difficulty_menu = TRY(window->try_add_menu("&Difficulty"_string));
GUI::ActionGroup difficulty_actions;
@ -86,28 +86,28 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
field->set_field_difficulty(Field::Difficulty::Beginner);
});
action->set_checked(field->difficulty() == Field::Difficulty::Beginner);
TRY(difficulty_menu->try_add_action(action));
difficulty_menu->add_action(action);
difficulty_actions.add_action(action);
action = GUI::Action::create_checkable("&Intermediate", { Mod_Ctrl, Key_I }, [&](auto&) {
field->set_field_difficulty(Field::Difficulty::Intermediate);
});
action->set_checked(field->difficulty() == Field::Difficulty::Intermediate);
TRY(difficulty_menu->try_add_action(action));
difficulty_menu->add_action(action);
difficulty_actions.add_action(action);
action = GUI::Action::create_checkable("&Expert", { Mod_Ctrl, Key_E }, [&](auto&) {
field->set_field_difficulty(Field::Difficulty::Expert);
});
action->set_checked(field->difficulty() == Field::Difficulty::Expert);
TRY(difficulty_menu->try_add_action(action));
difficulty_menu->add_action(action);
difficulty_actions.add_action(action);
action = GUI::Action::create_checkable("&Madwoman", { Mod_Ctrl, Key_M }, [&](auto&) {
field->set_field_difficulty(Field::Difficulty::Madwoman);
});
action->set_checked(field->difficulty() == Field::Difficulty::Madwoman);
TRY(difficulty_menu->try_add_action(action));
difficulty_menu->add_action(action);
difficulty_actions.add_action(action);
difficulty_menu->add_separator();
@ -115,15 +115,15 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
CustomGameDialog::show(window, field);
});
action->set_checked(field->difficulty() == Field::Difficulty::Custom);
TRY(difficulty_menu->try_add_action(action));
difficulty_menu->add_action(action);
difficulty_actions.add_action(action);
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/man6/Minesweeper.md"), "/bin/Help");
})));
TRY(help_menu->try_add_action(GUI::CommonActions::make_about_action("Minesweeper", app_icon, window)));
}));
help_menu->add_action(GUI::CommonActions::make_about_action("Minesweeper", app_icon, window));
window->show();

View file

@ -85,14 +85,14 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
auto game_menu = TRY(window->try_add_menu("&Game"_string));
TRY(game_menu->try_add_action(GUI::Action::create("&New Game", { Mod_None, Key_F2 }, TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/reload.png"sv)), [&](auto&) {
game_menu->add_action(GUI::Action::create("&New Game", { Mod_None, Key_F2 }, TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/reload.png"sv)), [&](auto&) {
game.reset();
})));
}));
static DeprecatedString const pause_text = "&Pause Game"sv;
auto const pause_icon = TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/pause.png"sv));
static DeprecatedString const continue_text = "&Continue Game"sv;
auto const continue_icon = TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/play.png"sv));
TRY(game_menu->try_add_action(GUI::Action::create(pause_text, { Mod_None, Key_Space }, pause_icon, [&](auto& action) {
game_menu->add_action(GUI::Action::create(pause_text, { Mod_None, Key_Space }, pause_icon, [&](auto& action) {
if (game.has_timer()) {
game.pause();
action.set_text(continue_text);
@ -102,7 +102,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
action.set_text(pause_text);
action.set_icon(pause_icon);
}
})));
}));
auto change_snake_color = GUI::Action::create("&Change Snake Color", TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/color-chooser.png"sv)), [&](auto&) {
auto was_paused = game.is_paused();
@ -118,7 +118,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
game.start();
});
change_snake_color->set_enabled(snake_skin_name == "Classic"sv);
TRY(game_menu->try_add_action(change_snake_color));
game_menu->add_action(change_snake_color);
GUI::ActionGroup skin_action_group;
skin_action_group.set_exclusive(true);
@ -136,7 +136,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
skin_action_group.add_action(*action);
if (snake_skin_name == name)
action->set_checked(true);
TRY(skin_menu->try_add_action(*action));
skin_menu->add_action(*action);
return {};
};
@ -147,16 +147,16 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
TRY(add_skin_action("Classic"sv, true));
game_menu->add_separator();
TRY(game_menu->try_add_action(GUI::CommonActions::make_quit_action([](auto&) {
game_menu->add_action(GUI::CommonActions::make_quit_action([](auto&) {
GUI::Application::the()->quit();
})));
}));
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/man6/Snake.md"), "/bin/Help");
})));
TRY(help_menu->try_add_action(GUI::CommonActions::make_about_action("Snake", app_icon, window)));
}));
help_menu->add_action(GUI::CommonActions::make_about_action("Snake", app_icon, window));
window->show();

View file

@ -199,34 +199,34 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
auto game_menu = TRY(window->try_add_menu("&Game"_string));
TRY(game_menu->try_add_action(GUI::Action::create("&New Game", { Mod_None, Key_F2 }, TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/reload.png"sv)), [&](auto&) {
game_menu->add_action(GUI::Action::create("&New Game", { Mod_None, Key_F2 }, TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/reload.png"sv)), [&](auto&) {
if (!confirm_end_current_game())
return;
game.setup(mode);
})));
}));
game_menu->add_separator();
auto undo_action = GUI::CommonActions::make_undo_action([&](auto&) {
game.perform_undo();
});
undo_action->set_enabled(false);
TRY(game_menu->try_add_action(undo_action));
game_menu->add_action(undo_action);
game_menu->add_separator();
TRY(game_menu->try_add_action(TRY(Cards::make_cards_settings_action(window))));
TRY(game_menu->try_add_action(single_card_draw_action));
TRY(game_menu->try_add_action(three_card_draw_action));
game_menu->add_action(TRY(Cards::make_cards_settings_action(window)));
game_menu->add_action(single_card_draw_action);
game_menu->add_action(three_card_draw_action);
game_menu->add_separator();
TRY(game_menu->try_add_action(toggle_auto_collect_action));
game_menu->add_action(toggle_auto_collect_action);
game_menu->add_separator();
TRY(game_menu->try_add_action(GUI::CommonActions::make_quit_action([&](auto&) { app->quit(); })));
game_menu->add_action(GUI::CommonActions::make_quit_action([&](auto&) { app->quit(); }));
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_about_action("Solitaire", app_icon, window)));
help_menu->add_action(GUI::CommonActions::make_command_palette_action(window));
help_menu->add_action(GUI::CommonActions::make_about_action("Solitaire", app_icon, window));
TRY(help_menu->try_add_action(GUI::CommonActions::make_help_action([&man_file](auto&) {
help_menu->add_action(GUI::CommonActions::make_help_action([&man_file](auto&) {
Desktop::Launcher::open(URL::create_with_file_scheme(man_file), "/bin/Help");
})));
}));
window->set_resizable(false);
window->resize(Solitaire::Game::width, Solitaire::Game::height + statusbar.max_height().as_int());

View file

@ -236,24 +236,24 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
suit_actions.add_action(two_suit_action);
auto game_menu = TRY(window->try_add_menu("&Game"_string));
TRY(game_menu->try_add_action(GUI::Action::create("&New Game", { Mod_None, Key_F2 }, TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/reload.png"sv)), [&](auto&) {
game_menu->add_action(GUI::Action::create("&New Game", { Mod_None, Key_F2 }, TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/reload.png"sv)), [&](auto&) {
if (!confirm_end_current_game())
return;
game.setup(mode);
})));
}));
game_menu->add_separator();
auto undo_action = GUI::CommonActions::make_undo_action([&](auto&) {
game.perform_undo();
});
undo_action->set_enabled(false);
TRY(game_menu->try_add_action(undo_action));
game_menu->add_action(undo_action);
game_menu->add_separator();
TRY(game_menu->try_add_action(TRY(Cards::make_cards_settings_action(window))));
TRY(game_menu->try_add_action(single_suit_action));
TRY(game_menu->try_add_action(two_suit_action));
game_menu->add_action(TRY(Cards::make_cards_settings_action(window)));
game_menu->add_action(single_suit_action);
game_menu->add_action(two_suit_action);
game_menu->add_separator();
TRY(game_menu->try_add_action(GUI::CommonActions::make_quit_action([&](auto&) { app->quit(); })));
game_menu->add_action(GUI::CommonActions::make_quit_action([&](auto&) { app->quit(); }));
auto view_menu = TRY(window->try_add_menu("&View"_string));
@ -274,8 +274,8 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
best_time_actions->set_checked(statistic_display == StatisticDisplay::BestTime);
statistic_display_actions.add_action(best_time_actions);
TRY(view_menu->try_add_action(high_score_action));
TRY(view_menu->try_add_action(best_time_actions));
view_menu->add_action(high_score_action);
view_menu->add_action(best_time_actions);
auto help_menu = TRY(window->try_add_menu("&Help"_string));
help_menu->add_action(GUI::CommonActions::make_command_palette_action(window));