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:
parent
eec328e2ab
commit
f2faf2767f
51 changed files with 758 additions and 769 deletions
|
@ -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();
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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()) {
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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())
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue