1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-28 11:57:36 +00:00

Userland: Add GUI::Window::add_menu() and use it everywhere

Applications previously had to create a GUI::Menubar object, add menus
to it, and then call GUI::Window::set_menubar().

This patch introduces GUI::Window::add_menu() which creates the menubar
automatically and adds items to it. Application code becomes slightly
simpler as a result. :^)
This commit is contained in:
Andreas Kling 2021-07-21 21:21:03 +02:00
parent a4fdb7f029
commit 687a12d7fb
58 changed files with 187 additions and 311 deletions

View file

@ -181,9 +181,7 @@ int main(int argc, char** argv)
}
};
auto menubar = GUI::Menubar::construct();
auto& game_menu = menubar->add_menu("&Game");
auto& game_menu = window->add_menu("&Game");
game_menu.add_action(GUI::Action::create("&New Game", { Mod_None, Key_F2 }, [&](auto&) {
start_a_new_game();
@ -212,11 +210,9 @@ int main(int argc, char** argv)
GUI::Application::the()->quit();
}));
auto& help_menu = menubar->add_menu("&Help");
auto& help_menu = window->add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_about_action("2048", app_icon, window));
window->set_menubar(move(menubar));
window->show();
window->set_icon(app_icon.bitmap_for_size(16));

View file

@ -47,9 +47,7 @@ int main(int argc, char** argv)
auto& game = window->set_main_widget<Breakout::Game>();
window->show();
auto menubar = GUI::Menubar::construct();
auto& game_menu = menubar->add_menu("&Game");
auto& game_menu = window->add_menu("&Game");
game_menu.add_action(GUI::Action::create_checkable("&Pause", { {}, Key_P }, [&](auto& action) {
game.set_paused(action.is_checked());
}));
@ -60,10 +58,8 @@ int main(int argc, char** argv)
GUI::Application::the()->quit();
}));
auto& help_menu = menubar->add_menu("&Help");
auto& help_menu = window->add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_about_action("Breakout", app_icon, window));
window->set_menubar(move(menubar));
return app->exec();
}

View file

@ -76,8 +76,7 @@ int main(int argc, char** argv)
widget.set_coordinates(config->read_bool_entry("Style", "Coordinates", true));
widget.set_show_available_moves(config->read_bool_entry("Style", "ShowAvailableMoves", true));
auto menubar = GUI::Menubar::construct();
auto& game_menu = menubar->add_menu("&Game");
auto& game_menu = window->add_menu("&Game");
game_menu.add_action(GUI::Action::create("&Resign", { Mod_None, Key_F3 }, [&](auto&) {
widget.resign();
@ -131,7 +130,7 @@ int main(int argc, char** argv)
GUI::Application::the()->quit();
}));
auto& style_menu = menubar->add_menu("&Style");
auto& style_menu = window->add_menu("&Style");
GUI::ActionGroup piece_set_action_group;
piece_set_action_group.set_exclusive(true);
auto& piece_set_menu = style_menu.add_submenu("&Piece Set");
@ -189,7 +188,7 @@ int main(int argc, char** argv)
show_available_moves_action->set_checked(widget.show_available_moves());
style_menu.add_action(show_available_moves_action);
auto& engine_menu = menubar->add_menu("&Engine");
auto& engine_menu = window->add_menu("&Engine");
GUI::ActionGroup engines_action_group;
engines_action_group.set_exclusive(true);
@ -210,11 +209,9 @@ int main(int argc, char** argv)
engine_submenu.add_action(*action);
}
auto& help_menu = menubar->add_menu("&Help");
auto& help_menu = window->add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_about_action("Chess", app_icon, window));
window->set_menubar(move(menubar));
window->show();
widget.reset();

View file

@ -68,17 +68,14 @@ int main(int argc, char** argv)
return high_score;
};
auto menubar = GUI::Menubar::construct();
auto& game_menu = menubar->add_menu("&Game");
auto& game_menu = window->add_menu("&Game");
game_menu.add_action(GUI::CommonActions::make_quit_action([](auto&) {
GUI::Application::the()->quit();
}));
auto& help_menu = menubar->add_menu("&Help");
auto& help_menu = window->add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_about_action("Flappy Bug", app_icon, window));
window->set_menubar(move(menubar));
window->show();
return app->exec();

View file

@ -110,8 +110,7 @@ int main(int argc, char** argv)
});
main_toolbar.add_action(rotate_pattern_action);
auto menubar = GUI::Menubar::construct();
auto& game_menu = menubar->add_menu("&Game");
auto& game_menu = window->add_menu("&Game");
game_menu.add_action(clear_board_action);
game_menu.add_action(randomize_cells_action);
@ -123,11 +122,9 @@ int main(int argc, char** argv)
GUI::Application::the()->quit();
}));
auto& help_menu = menubar->add_menu("&Help");
auto& help_menu = window->add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_about_action("Game Of Life", app_icon, window));
window->set_menubar(move(menubar));
board_widget.on_running_state_change = [&]() {
if (board_widget.is_running()) {
statusbar.set_text("Running...");

View file

@ -94,8 +94,7 @@ int main(int argc, char** argv)
GUI::MessageBox::show(window, "Settings have been successfully saved and will take effect in the next game.", "Settings Changed Successfully", GUI::MessageBox::Type::Information);
};
auto menubar = GUI::Menubar::construct();
auto& game_menu = menubar->add_menu("&Game");
auto& game_menu = window->add_menu("&Game");
game_menu.add_action(GUI::Action::create("&New Game", { Mod_None, Key_F2 }, [&](auto&) {
game.setup(player_name);
@ -107,12 +106,11 @@ int main(int argc, char** argv)
game_menu.add_separator();
game_menu.add_action(GUI::CommonActions::make_quit_action([&](auto&) { app->quit(); }));
auto& help_menu = menubar->add_menu("&Help");
auto& help_menu = window->add_menu("&Help");
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());
window->set_menubar(move(menubar));
window->set_icon(app_icon.bitmap_for_size(16));
window->show();
game.setup(player_name);

View file

@ -103,9 +103,7 @@ int main(int argc, char** argv)
window->resize(size);
});
auto menubar = GUI::Menubar::construct();
auto& game_menu = menubar->add_menu("&Game");
auto& game_menu = window->add_menu("&Game");
game_menu.add_action(GUI::Action::create("&New Game", { Mod_None, Key_F2 }, [&](auto&) {
field.reset();
@ -125,7 +123,7 @@ int main(int argc, char** argv)
GUI::Application::the()->quit();
}));
auto& difficulty_menu = menubar->add_menu("&Difficulty");
auto& difficulty_menu = window->add_menu("&Difficulty");
difficulty_menu.add_action(GUI::Action::create("&Beginner", { Mod_Ctrl, Key_B }, [&](auto&) {
field.set_field_size(9, 9, 10);
}));
@ -139,11 +137,9 @@ int main(int argc, char** argv)
field.set_field_size(32, 60, 350);
}));
auto& help_menu = menubar->add_menu("&Help");
auto& help_menu = window->add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_about_action("Minesweeper", app_icon, window));
window->set_menubar(move(menubar));
window->show();
window->set_icon(app_icon.bitmap_for_size(16));

View file

@ -55,17 +55,13 @@ int main(int argc, char** argv)
window->set_resizable(false);
window->show();
auto menubar = GUI::Menubar::construct();
auto& game_menu = menubar->add_menu("&Game");
auto& game_menu = window->add_menu("&Game");
game_menu.add_action(GUI::CommonActions::make_quit_action([](auto&) {
GUI::Application::the()->quit();
}));
auto& help_menu = menubar->add_menu("&Help");
auto& help_menu = window->add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_about_action("Pong", app_icon, window));
window->set_menubar(move(menubar));
return app->exec();
}

View file

@ -58,9 +58,7 @@ int main(int argc, char** argv)
auto& game = window->set_main_widget<SnakeGame>();
auto menubar = GUI::Menubar::construct();
auto& game_menu = menubar->add_menu("&Game");
auto& game_menu = window->add_menu("&Game");
game_menu.add_action(GUI::Action::create("&New Game", { Mod_None, Key_F2 }, [&](auto&) {
game.reset();
@ -70,11 +68,9 @@ int main(int argc, char** argv)
GUI::Application::the()->quit();
}));
auto& help_menu = menubar->add_menu("&Help");
auto& help_menu = window->add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_about_action("Snake", app_icon, window));
window->set_menubar(move(menubar));
window->show();
window->set_icon(app_icon.bitmap_for_size(16));

View file

@ -171,8 +171,7 @@ int main(int argc, char** argv)
three_card_draw_action->set_status_tip("Draw three cards at a time");
draw_setting_actions.add_action(three_card_draw_action);
auto menubar = GUI::Menubar::construct();
auto& game_menu = menubar->add_menu("&Game");
auto& game_menu = window->add_menu("&Game");
game_menu.add_action(GUI::Action::create("&New Game", { Mod_None, Key_F2 }, [&](auto&) {
game.setup(mode);
@ -189,12 +188,11 @@ int main(int argc, char** argv)
game_menu.add_separator();
game_menu.add_action(GUI::CommonActions::make_quit_action([&](auto&) { app->quit(); }));
auto& help_menu = menubar->add_menu("&Help");
auto& help_menu = window->add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_about_action("Solitaire", app_icon, window));
window->set_resizable(false);
window->resize(Solitaire::Game::width, Solitaire::Game::height + statusbar.max_height());
window->set_menubar(move(menubar));
window->set_icon(app_icon.bitmap_for_size(16));
window->show();

View file

@ -163,9 +163,7 @@ int main(int argc, char** argv)
two_suit_action->set_checked(mode == Spider::Mode::TwoSuit);
suit_actions.add_action(two_suit_action);
auto menubar = GUI::Menubar::construct();
auto& game_menu = menubar->add_menu("&Game");
auto& game_menu = window->add_menu("&Game");
game_menu.add_action(GUI::Action::create("&New Game", { Mod_None, Key_F2 }, [&](auto&) {
game.setup(mode);
}));
@ -175,12 +173,11 @@ int main(int argc, char** argv)
game_menu.add_separator();
game_menu.add_action(GUI::CommonActions::make_quit_action([&](auto&) { app->quit(); }));
auto& help_menu = menubar->add_menu("&Help");
auto& help_menu = window->add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_about_action("Spider", app_icon, window));
window->set_resizable(false);
window->resize(Spider::Game::width, Spider::Game::height + statusbar.max_height());
window->set_menubar(move(menubar));
window->set_icon(app_icon.bitmap_for_size(16));
window->show();