1
0
Fork 0
mirror of https://github.com/LadybirdBrowser/ladybird.git synced 2025-06-09 17:44:56 +09: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
Notes: sideshowbarker 2024-07-18 08:37:51 +09:00
58 changed files with 187 additions and 311 deletions

View file

@ -206,8 +206,7 @@ int main(int argc, char** argv)
window->set_double_buffering_enabled(true);
auto& widget = window->set_main_widget<GLContextWidget>();
auto menubar = GUI::Menubar::construct();
auto& file_menu = menubar->add_menu("&File");
auto& file_menu = window->add_menu("&File");
auto load_model = [&](StringView const& filename) {
if (widget.load(filename)) {
@ -229,7 +228,7 @@ int main(int argc, char** argv)
app->quit();
}));
auto& view_menu = menubar->add_menu("&View");
auto& view_menu = window->add_menu("&View");
view_menu.add_action(GUI::CommonActions::make_fullscreen_action([&](auto&) {
window->set_fullscreen(!window->is_fullscreen());
}));
@ -281,10 +280,9 @@ int main(int argc, char** argv)
normal_rotation_action->set_checked(true);
auto& help_menu = menubar->add_menu("&Help");
auto& help_menu = window->add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_about_action("3D File Viewer", app_icon, window));
window->set_menubar(move(menubar));
window->show();
auto filename = argc > 1 ? argv[1] : "/home/anon/Documents/3D Models/teapot.obj";

View file

@ -123,9 +123,7 @@ BrowserWindow::~BrowserWindow()
void BrowserWindow::build_menus()
{
auto menubar = GUI::Menubar::construct();
auto& file_menu = menubar->add_menu("&File");
auto& file_menu = add_menu("&File");
file_menu.add_action(WindowActions::the().create_new_tab_action());
auto close_tab_action = GUI::Action::create(
@ -141,7 +139,7 @@ void BrowserWindow::build_menus()
GUI::Application::the()->quit();
}));
auto& view_menu = menubar->add_menu("&View");
auto& view_menu = add_menu("&View");
view_menu.add_action(WindowActions::the().show_bookmarks_bar_action());
view_menu.add_separator();
view_menu.add_action(GUI::CommonActions::make_fullscreen_action(
@ -169,7 +167,7 @@ void BrowserWindow::build_menus()
m_reload_action = GUI::CommonActions::make_reload_action([this](auto&) { active_tab().reload(); }, this);
m_reload_action->set_status_tip("Reload current page");
auto& go_menu = menubar->add_menu("&Go");
auto& go_menu = add_menu("&Go");
go_menu.add_action(*m_go_back_action);
go_menu.add_action(*m_go_forward_action);
go_menu.add_action(*m_go_home_action);
@ -235,7 +233,7 @@ void BrowserWindow::build_menus()
this);
m_inspect_dom_tree_action->set_status_tip("Open DOM inspector window for this page");
auto& inspect_menu = menubar->add_menu("&Inspect");
auto& inspect_menu = add_menu("&Inspect");
inspect_menu.add_action(*m_view_source_action);
inspect_menu.add_action(*m_inspect_dom_tree_action);
@ -276,7 +274,7 @@ void BrowserWindow::build_menus()
js_console_action->set_status_tip("Open JavaScript console for this page");
inspect_menu.add_action(js_console_action);
auto& settings_menu = menubar->add_menu("&Settings");
auto& settings_menu = add_menu("&Settings");
m_change_homepage_action = GUI::Action::create(
"Set Homepage URL", [this](auto&) {
@ -362,7 +360,7 @@ void BrowserWindow::build_menus()
custom_search_engine_action->set_status_tip(g_search_engine);
}
auto& debug_menu = menubar->add_menu("&Debug");
auto& debug_menu = add_menu("&Debug");
debug_menu.add_action(GUI::Action::create(
"Dump &DOM Tree", [this](auto&) {
auto& tab = active_tab();
@ -490,10 +488,8 @@ void BrowserWindow::build_menus()
spoof_user_agent_menu.add_action(custom_user_agent);
m_user_agent_spoof_actions.add_action(custom_user_agent);
auto& help_menu = menubar->add_menu("&Help");
auto& help_menu = add_menu("&Help");
help_menu.add_action(WindowActions::the().about_action());
set_menubar(move(menubar));
}
GUI::TabWidget& BrowserWindow::tab_widget()

View file

@ -49,14 +49,12 @@ int main(int argc, char** argv)
window->show();
window->set_icon(app_icon.bitmap_for_size(16));
auto menubar = GUI::Menubar::construct();
auto& file_menu = menubar->add_menu("&File");
auto& file_menu = window->add_menu("&File");
file_menu.add_action(GUI::CommonActions::make_quit_action([](auto&) {
GUI::Application::the()->quit();
}));
auto& edit_menu = menubar->add_menu("&Edit");
auto& edit_menu = window->add_menu("&Edit");
edit_menu.add_action(GUI::CommonActions::make_copy_action([&](auto&) {
GUI::Clipboard::the().set_plain_text(widget.get_entry());
}));
@ -70,8 +68,7 @@ int main(int argc, char** argv)
}
}));
auto& help_menu = menubar->add_menu("&Help");
auto& help_menu = window->add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_about_action("Calculator", app_icon, window));
window->set_menubar(move(menubar));
return app->exec();
}

View file

@ -126,8 +126,7 @@ int main(int argc, char** argv)
view_month_action->set_checked(true);
};
auto menubar = GUI::Menubar::construct();
auto& file_menu = menubar->add_menu("&File");
auto& file_menu = window->add_menu("&File");
file_menu.add_action(GUI::Action::create("&Add Event", { Mod_Ctrl | Mod_Shift, Key_E }, Gfx::Bitmap::try_load_from_file("/res/icons/16x16/add-event.png"),
[&](const GUI::Action&) {
AddEventDialog::show(calendar->selected_date(), window);
@ -139,14 +138,13 @@ int main(int argc, char** argv)
GUI::Application::the()->quit();
}));
auto& view_menu = menubar->add_menu("&View");
auto& view_menu = window->add_menu("&View");
view_menu.add_action(*view_month_action);
view_menu.add_action(*view_year_action);
auto& help_menu = menubar->add_menu("&Help");
auto& help_menu = window->add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_about_action("Calendar", app_icon, window));
window->set_menubar(move(menubar));
window->show();
app->exec();
}

View file

@ -842,9 +842,7 @@ int run_in_windowed_mode(RefPtr<Core::ConfigFile> config, String initial_locatio
refresh_tree_view();
});
auto menubar = GUI::Menubar::construct();
auto& file_menu = menubar->add_menu("&File");
auto& file_menu = window->add_menu("&File");
file_menu.add_action(mkdir_action);
file_menu.add_action(touch_action);
file_menu.add_action(focus_dependent_delete_action);
@ -856,7 +854,7 @@ int run_in_windowed_mode(RefPtr<Core::ConfigFile> config, String initial_locatio
GUI::Application::the()->quit();
}));
auto& edit_menu = menubar->add_menu("&Edit");
auto& edit_menu = window->add_menu("&Edit");
edit_menu.add_action(cut_action);
edit_menu.add_action(copy_action);
edit_menu.add_action(paste_action);
@ -874,7 +872,7 @@ int run_in_windowed_mode(RefPtr<Core::ConfigFile> config, String initial_locatio
directory_view.set_should_show_dotfiles(show_dotfiles);
action_show_dotfiles->set_checked(show_dotfiles);
auto& view_menu = menubar->add_menu("&View");
auto& view_menu = window->add_menu("&View");
auto& layout_menu = view_menu.add_submenu("&Layout");
layout_menu.add_action(*layout_toolbar_action);
layout_menu.add_action(*layout_location_action);
@ -897,7 +895,7 @@ int run_in_windowed_mode(RefPtr<Core::ConfigFile> config, String initial_locatio
location_textbox.set_focus(true);
});
auto& go_menu = menubar->add_menu("&Go");
auto& go_menu = window->add_menu("&Go");
go_menu.add_action(go_back_action);
go_menu.add_action(go_forward_action);
go_menu.add_action(open_parent_directory_action);
@ -906,11 +904,9 @@ int run_in_windowed_mode(RefPtr<Core::ConfigFile> config, String initial_locatio
go_menu.add_separator();
go_menu.add_action(directory_view.open_terminal_action());
auto& help_menu = menubar->add_menu("&Help");
auto& help_menu = window->add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_about_action("File Manager", GUI::Icon::default_icon("app-file-manager"), window));
window->set_menubar(menubar);
main_toolbar.add_action(go_back_action);
main_toolbar.add_action(go_forward_action);
main_toolbar.add_action(open_parent_directory_action);

View file

@ -533,9 +533,9 @@ void FontEditorWidget::initialize(const String& path, RefPtr<Gfx::BitmapFont>&&
on_initialize();
}
void FontEditorWidget::initialize_menubar(GUI::Menubar& menubar)
void FontEditorWidget::initialize_menubar(GUI::Window& window)
{
auto& file_menu = menubar.add_menu("&File");
auto& file_menu = window.add_menu("&File");
file_menu.add_action(*m_new_action);
file_menu.add_action(*m_open_action);
file_menu.add_action(*m_save_action);
@ -547,7 +547,7 @@ void FontEditorWidget::initialize_menubar(GUI::Menubar& menubar)
GUI::Application::the()->quit();
}));
auto& edit_menu = menubar.add_menu("&Edit");
auto& edit_menu = window.add_menu("&Edit");
edit_menu.add_action(*m_undo_action);
edit_menu.add_action(*m_redo_action);
edit_menu.add_separator();
@ -556,7 +556,7 @@ void FontEditorWidget::initialize_menubar(GUI::Menubar& menubar)
edit_menu.add_action(*m_paste_action);
edit_menu.add_action(*m_delete_action);
auto& view_menu = menubar.add_menu("&View");
auto& view_menu = window.add_menu("&View");
view_menu.add_action(*m_open_preview_action);
view_menu.add_separator();
view_menu.add_action(*m_show_metadata_action);
@ -566,11 +566,11 @@ void FontEditorWidget::initialize_menubar(GUI::Menubar& menubar)
scale_menu.add_action(*m_scale_ten_action);
scale_menu.add_action(*m_scale_fifteen_action);
auto& help_menu = menubar.add_menu("&Help");
auto& help_menu = window.add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_help_action([](auto&) {
Desktop::Launcher::open(URL::create_with_file_protocol("/usr/share/man/man1/FontEditor.md"), "/bin/Help");
}));
help_menu.add_action(GUI::CommonActions::make_about_action("Font Editor", GUI::Icon::default_icon("app-font-editor"), window()));
help_menu.add_action(GUI::CommonActions::make_about_action("Font Editor", GUI::Icon::default_icon("app-font-editor"), &window));
}
bool FontEditorWidget::save_as(const String& path)

View file

@ -27,7 +27,7 @@ public:
const String& path() { return m_path; }
const Gfx::BitmapFont& edited_font() { return *m_edited_font; }
void initialize(const String& path, RefPtr<Gfx::BitmapFont>&&);
void initialize_menubar(GUI::Menubar&);
void initialize_menubar(GUI::Window&);
bool is_showing_font_metadata() { return m_font_metadata; }
void set_show_font_metadata(bool b);

View file

@ -78,9 +78,7 @@ int main(int argc, char** argv)
auto& font_editor = window->set_main_widget<FontEditorWidget>(path, move(edited_font));
font_editor.update_title();
auto menubar = GUI::Menubar::construct();
font_editor.initialize_menubar(menubar);
window->set_menubar(move(menubar));
font_editor.initialize_menubar(*window);
window->on_close_request = [&]() -> GUI::Window::CloseRequestDecision {
if (font_editor.request_close())

View file

@ -261,23 +261,19 @@ int main(int argc, char* argv[])
toolbar.add_action(*go_forward_action);
toolbar.add_action(*go_home_action);
auto menubar = GUI::Menubar::construct();
auto& file_menu = menubar->add_menu("&File");
auto& file_menu = window->add_menu("&File");
file_menu.add_action(GUI::CommonActions::make_quit_action([](auto&) {
GUI::Application::the()->quit();
}));
auto& go_menu = menubar->add_menu("&Go");
auto& go_menu = window->add_menu("&Go");
go_menu.add_action(*go_back_action);
go_menu.add_action(*go_forward_action);
go_menu.add_action(*go_home_action);
auto& help_menu = menubar->add_menu("&Help");
auto& help_menu = window->add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_about_action("Help", app_icon, window));
window->set_menubar(move(menubar));
auto context_menu = GUI::Menu::construct();
context_menu->add_action(*go_back_action);
context_menu->add_action(*go_forward_action);

View file

@ -209,9 +209,9 @@ HexEditorWidget::~HexEditorWidget()
{
}
void HexEditorWidget::initialize_menubar(GUI::Menubar& menubar)
void HexEditorWidget::initialize_menubar(GUI::Window& window)
{
auto& file_menu = menubar.add_menu("&File");
auto& file_menu = window.add_menu("&File");
file_menu.add_action(*m_new_action);
file_menu.add_action(*m_open_action);
file_menu.add_action(*m_save_action);
@ -223,14 +223,14 @@ void HexEditorWidget::initialize_menubar(GUI::Menubar& menubar)
GUI::Application::the()->quit();
}));
auto& edit_menu = menubar.add_menu("&Edit");
auto& edit_menu = window.add_menu("&Edit");
edit_menu.add_action(GUI::CommonActions::make_select_all_action([this](auto&) {
m_editor->select_all();
m_editor->update();
}));
edit_menu.add_action(GUI::Action::create("Fill &Selection...", { Mod_Ctrl, Key_B }, [&](const GUI::Action&) {
String value;
if (GUI::InputBox::show(window(), value, "Fill byte (hex):", "Fill Selection") == GUI::InputBox::ExecOK && !value.is_empty()) {
if (GUI::InputBox::show(&window, value, "Fill byte (hex):", "Fill Selection") == GUI::InputBox::ExecOK && !value.is_empty()) {
auto fill_byte = strtol(value.characters(), nullptr, 16);
m_editor->fill_selection(fill_byte);
}
@ -249,13 +249,13 @@ void HexEditorWidget::initialize_menubar(GUI::Menubar& menubar)
edit_menu.add_action(*m_find_action);
edit_menu.add_action(GUI::Action::create("Find &Next", { Mod_None, Key_F3 }, Gfx::Bitmap::try_load_from_file("/res/icons/16x16/find-next.png"), [&](const GUI::Action&) {
if (m_search_text.is_empty() || m_search_buffer.is_empty()) {
GUI::MessageBox::show(window(), "Nothing to search for", "Not found", GUI::MessageBox::Type::Warning);
GUI::MessageBox::show(&window, "Nothing to search for", "Not found", GUI::MessageBox::Type::Warning);
return;
}
auto result = m_editor->find_and_highlight(m_search_buffer, last_found_index());
if (!result) {
GUI::MessageBox::show(window(), String::formatted("No more matches for \"{}\" found in this file", m_search_text), "Not found", GUI::MessageBox::Type::Warning);
GUI::MessageBox::show(&window, String::formatted("No more matches for \"{}\" found in this file", m_search_text), "Not found", GUI::MessageBox::Type::Warning);
return;
}
m_editor->update();
@ -269,7 +269,7 @@ void HexEditorWidget::initialize_menubar(GUI::Menubar& menubar)
m_search_results->update();
if (matches.is_empty()) {
GUI::MessageBox::show(window(), "No strings found in this file", "Not found", GUI::MessageBox::Type::Warning);
GUI::MessageBox::show(&window, "No strings found in this file", "Not found", GUI::MessageBox::Type::Warning);
return;
}
@ -279,7 +279,7 @@ void HexEditorWidget::initialize_menubar(GUI::Menubar& menubar)
edit_menu.add_separator();
edit_menu.add_action(*m_goto_offset_action);
auto& view_menu = menubar.add_menu("&View");
auto& view_menu = window.add_menu("&View");
auto show_toolbar = m_config->read_bool_entry("Layout", "ShowToolbar", true);
m_layout_toolbar_action->set_checked(show_toolbar);
@ -307,8 +307,8 @@ void HexEditorWidget::initialize_menubar(GUI::Menubar& menubar)
action->set_checked(true);
}
auto& help_menu = menubar.add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_about_action("Hex Editor", GUI::Icon::default_icon("app-hex-editor"), window()));
auto& help_menu = window.add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_about_action("Hex Editor", GUI::Icon::default_icon("app-hex-editor"), &window));
}
void HexEditorWidget::set_path(StringView const& path)

View file

@ -22,7 +22,7 @@ class HexEditorWidget final : public GUI::Widget {
public:
virtual ~HexEditorWidget() override;
void open_file(const String& path);
void initialize_menubar(GUI::Menubar&);
void initialize_menubar(GUI::Window&);
bool request_close();
private:

View file

@ -39,9 +39,7 @@ int main(int argc, char** argv)
return GUI::Window::CloseRequestDecision::StayOpen;
};
auto menubar = GUI::Menubar::construct();
hex_editor_widget.initialize_menubar(menubar);
window->set_menubar(menubar);
hex_editor_widget.initialize_menubar(*window);
window->show();
window->set_icon(app_icon.bitmap_for_size(16));

View file

@ -237,13 +237,12 @@ void IRCAppWindow::setup_actions()
void IRCAppWindow::setup_menus()
{
auto menubar = GUI::Menubar::construct();
auto& file_menu = menubar->add_menu("&File");
auto& file_menu = add_menu("&File");
file_menu.add_action(GUI::CommonActions::make_quit_action([](auto&) {
GUI::Application::the()->quit();
}));
auto& server_menu = menubar->add_menu("&Server");
auto& server_menu = add_menu("&Server");
server_menu.add_action(*m_change_nick_action);
server_menu.add_separator();
server_menu.add_action(*m_join_action);
@ -253,7 +252,7 @@ void IRCAppWindow::setup_menus()
server_menu.add_action(*m_open_query_action);
server_menu.add_action(*m_close_query_action);
auto& channel_menu = menubar->add_menu("&Channel");
auto& channel_menu = add_menu("&Channel");
channel_menu.add_action(*m_change_topic_action);
channel_menu.add_action(*m_invite_user_action);
channel_menu.add_action(*m_banlist_action);
@ -272,10 +271,8 @@ void IRCAppWindow::setup_menus()
channel_menu.add_action(*m_cycle_channel_action);
channel_menu.add_action(*m_part_action);
auto& help_menu = menubar->add_menu("&Help");
auto& help_menu = add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_about_action("IRC Client", GUI::Icon::default_icon("app-irc-client"), this));
set_menubar(move(menubar));
}
void IRCAppWindow::setup_widgets()

View file

@ -264,15 +264,13 @@ int main(int argc, char** argv)
main_toolbar.add_action(reset_zoom_action);
main_toolbar.add_action(zoom_out_action);
auto menubar = GUI::Menubar::construct();
auto& file_menu = menubar->add_menu("&File");
auto& file_menu = window->add_menu("&File");
file_menu.add_action(open_action);
file_menu.add_action(delete_action);
file_menu.add_separator();
file_menu.add_action(quit_action);
auto& image_menu = menubar->add_menu("&Image");
auto& image_menu = window->add_menu("&Image");
image_menu.add_action(rotate_left_action);
image_menu.add_action(rotate_right_action);
image_menu.add_action(vertical_flip_action);
@ -280,13 +278,13 @@ int main(int argc, char** argv)
image_menu.add_separator();
image_menu.add_action(desktop_wallpaper_action);
auto& navigate_menu = menubar->add_menu("&Navigate");
auto& navigate_menu = window->add_menu("&Navigate");
navigate_menu.add_action(go_first_action);
navigate_menu.add_action(go_back_action);
navigate_menu.add_action(go_forward_action);
navigate_menu.add_action(go_last_action);
auto& view_menu = menubar->add_menu("&View");
auto& view_menu = window->add_menu("&View");
view_menu.add_action(full_screen_action);
view_menu.add_separator();
view_menu.add_action(zoom_in_action);
@ -295,14 +293,12 @@ int main(int argc, char** argv)
view_menu.add_separator();
view_menu.add_action(hide_show_toolbar_action);
auto& help_menu = menubar->add_menu("&Help");
auto& help_menu = window->add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_help_action([](auto&) {
Desktop::Launcher::open(URL::create_with_file_protocol("/usr/share/man/man1/ImageViewer.md"), "/bin/Help");
}));
help_menu.add_action(GUI::CommonActions::make_about_action("Image Viewer", app_icon, window));
window->set_menubar(move(menubar));
if (path != nullptr) {
widget.load_from_file(path);
} else {

View file

@ -82,19 +82,15 @@ int main(int argc, char** argv)
app->quit();
});
auto menubar = GUI::Menubar::construct();
auto& file_menu = menubar->add_menu("&File");
auto& file_menu = window->add_menu("&File");
file_menu.add_action(open_action);
file_menu.add_action(save_action);
file_menu.add_action(save_as_action);
file_menu.add_separator();
file_menu.add_action(quit_action);
auto& help_menu = menubar->add_menu("&Help");
auto& help_menu = window->add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_about_action("Keyboard Mapper", app_icon, window));
window->set_menubar(move(menubar));
return app->exec();
}

View file

@ -183,14 +183,12 @@ int main(int argc, char** argv)
auto menubar = GUI::Menubar::construct();
auto& file_menu = menubar->add_menu("&File");
auto& file_menu = window->add_menu("&File");
file_menu.add_action(quit_action);
auto& help_menu = menubar->add_menu("&Help");
auto& help_menu = window->add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_about_action("Keyboard Settings", app_icon, window));
window->set_menubar(move(menubar));
window->show();
return app->exec();

View file

@ -48,8 +48,7 @@ int main(int argc, char** argv)
window->set_icon(app_icon.bitmap_for_size(16));
auto& magnifier = window->set_main_widget<MagnifierWidget>();
auto menubar = GUI::Menubar::construct();
auto& file_menu = menubar->add_menu("&File");
auto& file_menu = window->add_menu("&File");
file_menu.add_action(GUI::CommonActions::make_quit_action([&](auto&) {
app->quit();
}));
@ -70,15 +69,14 @@ int main(int argc, char** argv)
size_action_group->add_action(four_x_action);
size_action_group->set_exclusive(true);
auto& view_menu = menubar->add_menu("&View");
auto& view_menu = window->add_menu("&View");
view_menu.add_action(two_x_action);
view_menu.add_action(four_x_action);
two_x_action->set_checked(true);
auto& help_menu = menubar->add_menu("&Help");
auto& help_menu = window->add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_about_action("Magnifier", app_icon, window));
window->set_menubar(move(menubar));
window->show();
magnifier.track_cursor_globally();

View file

@ -35,11 +35,11 @@ PDFViewerWidget::PDFViewerWidget()
};
}
void PDFViewerWidget::initialize_menubar(GUI::Menubar& menubar)
void PDFViewerWidget::initialize_menubar(GUI::Window& window)
{
auto& file_menu = menubar.add_menu("&File");
auto& file_menu = window.add_menu("&File");
file_menu.add_action(GUI::CommonActions::make_open_action([&](auto&) {
Optional<String> open_path = GUI::FilePicker::get_open_filepath(window());
Optional<String> open_path = GUI::FilePicker::get_open_filepath(&window);
if (open_path.has_value())
open_file(open_path.value());
}));
@ -48,8 +48,8 @@ void PDFViewerWidget::initialize_menubar(GUI::Menubar& menubar)
GUI::Application::the()->quit();
}));
auto& help_menu = menubar.add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_about_action("PDF Viewer", GUI::Icon::default_icon("app-pdf-viewer"), window()));
auto& help_menu = window.add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_about_action("PDF Viewer", GUI::Icon::default_icon("app-pdf-viewer"), &window));
}
void PDFViewerWidget::create_toolbar()

View file

@ -21,7 +21,7 @@ class PDFViewerWidget final : public GUI::Widget {
public:
~PDFViewerWidget() override = default;
void initialize_menubar(GUI::Menubar&);
void initialize_menubar(GUI::Window&);
void create_toolbar();
void open_file(const String& path);

View file

@ -21,9 +21,8 @@ int main(int argc, char** argv)
auto& pdf_viewer_widget = window->set_main_widget<PDFViewerWidget>();
auto menubar = GUI::Menubar::construct();
pdf_viewer_widget.initialize_menubar(menubar);
window->set_menubar(menubar);
pdf_viewer_widget.initialize_menubar(*window);
window->show();
window->set_icon(app_icon.bitmap_for_size(16));

View file

@ -60,9 +60,7 @@ int main(int argc, char** argv)
});
main_widget_updater->start();
auto menubar = GUI::Menubar::construct();
auto& file_menu = menubar->add_menu("&File");
auto& file_menu = window->add_menu("&File");
file_menu.add_action(GUI::Action::create("Export", { Mod_Ctrl, Key_E }, [&](const GUI::Action&) {
save_path = GUI::FilePicker::get_save_filepath(window, "Untitled", "wav");
if (!save_path.has_value())
@ -81,13 +79,11 @@ int main(int argc, char** argv)
return;
}));
auto& edit_menu = menubar->add_menu("&Edit");
auto& edit_menu = window->add_menu("&Edit");
main_widget.add_actions(edit_menu);
auto& help_menu = menubar->add_menu("&Help");
auto& help_menu = window->add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_about_action("Piano", app_icon, window));
window->set_menubar(move(menubar));
return app->exec();
}

View file

@ -141,8 +141,7 @@ int main(int argc, char** argv)
editor->image().set_path(save_path.value());
});
auto menubar = GUI::Menubar::construct();
auto& file_menu = menubar->add_menu("&File");
auto& file_menu = window->add_menu("&File");
file_menu.add_action(new_image_action);
file_menu.add_action(open_image_action);
@ -182,7 +181,7 @@ int main(int argc, char** argv)
GUI::Application::the()->quit();
}));
auto& edit_menu = menubar->add_menu("&Edit");
auto& edit_menu = window->add_menu("&Edit");
auto copy_action = GUI::CommonActions::make_copy_action([&](auto&) {
auto* editor = current_image_editor();
@ -294,7 +293,7 @@ int main(int argc, char** argv)
},
window));
auto& view_menu = menubar->add_menu("&View");
auto& view_menu = window->add_menu("&View");
auto zoom_in_action = GUI::CommonActions::make_zoom_in_action(
[&](auto&) {
@ -321,14 +320,14 @@ int main(int argc, char** argv)
view_menu.add_action(zoom_out_action);
view_menu.add_action(reset_zoom_action);
auto& tool_menu = menubar->add_menu("&Tool");
auto& tool_menu = window->add_menu("&Tool");
toolbox.for_each_tool([&](auto& tool) {
if (tool.action())
tool_menu.add_action(*tool.action());
return IterationDecision::Continue;
});
auto& layer_menu = menubar->add_menu("&Layer");
auto& layer_menu = window->add_menu("&Layer");
layer_menu.add_action(GUI::Action::create(
"New &Layer...", { Mod_Ctrl | Mod_Shift, Key_N }, [&](auto&) {
auto* editor = current_image_editor();
@ -438,7 +437,7 @@ int main(int argc, char** argv)
},
window));
auto& filter_menu = menubar->add_menu("&Filter");
auto& filter_menu = window->add_menu("&Filter");
auto& spatial_filters_menu = filter_menu.add_submenu("&Spatial");
auto& edge_detect_submenu = spatial_filters_menu.add_submenu("&Edge Detect");
@ -542,11 +541,9 @@ int main(int argc, char** argv)
}
}));
auto& help_menu = menubar->add_menu("&Help");
auto& help_menu = window->add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_about_action("Pixel Paint", app_icon, window));
window->set_menubar(move(menubar));
auto& toolbar = *main_widget.find_descendant_of_type_named<GUI::Toolbar>("toolbar");
toolbar.add_action(new_image_action);
toolbar.add_action(open_image_action);

View file

@ -51,11 +51,9 @@ int main(int argc, char** argv)
window->set_title("Sound Player");
window->set_icon(app_icon.bitmap_for_size(16));
auto menubar = GUI::Menubar::construct();
auto& file_menu = window->add_menu("&File");
auto& file_menu = menubar->add_menu("&File");
auto& playlist_menu = menubar->add_menu("Play&list");
auto& playlist_menu = window->add_menu("Play&list");
String path = argv[1];
// start in advanced view by default
@ -94,7 +92,7 @@ int main(int argc, char** argv)
app->quit();
}));
auto& playback_menu = menubar->add_menu("&Playback");
auto& playback_menu = window->add_menu("&Playback");
auto loop = GUI::Action::create_checkable("&Loop", { Mod_Ctrl, Key_R }, [&](auto& action) {
player->set_looping_file(action.is_checked());
@ -102,7 +100,7 @@ int main(int argc, char** argv)
playback_menu.add_action(move(loop));
auto& visualization_menu = menubar->add_menu("&Visualization");
auto& visualization_menu = window->add_menu("&Visualization");
Vector<NonnullRefPtr<GUI::Action>> visualization_checkmarks;
GUI::Action* checked_vis = nullptr;
auto uncheck_all_but = [&](GUI::Action& one) {for (auto& a : visualization_checkmarks) if (a != &one) a->set_checked(false); };
@ -147,11 +145,9 @@ int main(int argc, char** argv)
visualization_menu.add_action(none);
visualization_checkmarks.append(none);
auto& help_menu = menubar->add_menu("&Help");
auto& help_menu = window->add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_about_action("Sound Player", app_icon, window));
window->set_menubar(move(menubar));
window->show();
return app->exec();
}

View file

@ -271,9 +271,7 @@ int main(int argc, char* argv[])
auto& treemapwidget = *mainwidget.find_descendant_of_type_named<SpaceAnalyzer::TreeMapWidget>("tree_map");
auto& statusbar = *mainwidget.find_descendant_of_type_named<GUI::Statusbar>("statusbar");
auto menubar = GUI::Menubar::construct();
auto& file_menu = menubar->add_menu("&File");
auto& file_menu = window->add_menu("&File");
file_menu.add_action(GUI::Action::create("&Analyze", [&](auto&) {
analyze(tree, treemapwidget, statusbar);
}));
@ -282,11 +280,9 @@ int main(int argc, char* argv[])
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(APP_NAME, app_icon, window));
window->set_menubar(move(menubar));
// Configure the nodes context menu.
auto open_folder_action = GUI::Action::create("Open Folder", { Mod_Ctrl, Key_O }, Gfx::Bitmap::try_load_from_file("/res/icons/16x16/open.png"), [&](auto&) {
Desktop::Launcher::open(URL::create_with_file_protocol(get_absolute_path_to_selected_node(treemapwidget)));

View file

@ -85,8 +85,7 @@ int main(int argc, char* argv[])
if (filename)
spreadsheet_widget.load(filename);
auto menubar = GUI::Menubar::construct();
auto& file_menu = menubar->add_menu("&File");
auto& file_menu = window->add_menu("&File");
file_menu.add_action(GUI::Action::create("Add New Sheet", Gfx::Bitmap::try_load_from_file("/res/icons/16x16/new-tab.png"), [&](auto&) {
spreadsheet_widget.add_sheet();
@ -138,7 +137,7 @@ int main(int argc, char* argv[])
return GUI::Window::CloseRequestDecision::StayOpen;
};
auto& edit_menu = menubar->add_menu("&Edit");
auto& edit_menu = window->add_menu("&Edit");
auto clipboard_action = [&](bool is_cut) {
/// text/x-spreadsheet-data:
@ -228,7 +227,7 @@ int main(int argc, char* argv[])
},
window));
auto& help_menu = menubar->add_menu("&Help");
auto& help_menu = window->add_menu("&Help");
help_menu.add_action(GUI::Action::create(
"&Functions Help", [&](auto&) {
@ -245,8 +244,6 @@ int main(int argc, char* argv[])
help_menu.add_action(GUI::CommonActions::make_about_action("Spreadsheet", app_icon, window));
window->set_menubar(move(menubar));
window->show();
return app->exec();

View file

@ -309,8 +309,7 @@ int main(int argc, char** argv)
},
&process_table_view);
auto menubar = GUI::Menubar::construct();
auto& file_menu = menubar->add_menu("&File");
auto& file_menu = window->add_menu("&File");
file_menu.add_action(GUI::CommonActions::make_quit_action([](auto&) {
GUI::Application::the()->quit();
}));
@ -328,7 +327,7 @@ int main(int argc, char** argv)
process_context_menu->popup(event.screen_position(), process_properties_action);
};
auto& frequency_menu = menubar->add_menu("F&requency");
auto& frequency_menu = window->add_menu("F&requency");
GUI::ActionGroup frequency_action_group;
frequency_action_group.set_exclusive(true);
@ -346,11 +345,9 @@ int main(int argc, char** argv)
make_frequency_action(3, true);
make_frequency_action(5);
auto& help_menu = menubar->add_menu("&Help");
auto& help_menu = window->add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_about_action("System Monitor", app_icon, window));
window->set_menubar(move(menubar));
process_table_view.on_activation = [&](auto&) {
if (process_properties_action->is_enabled())
process_properties_action->activate();

View file

@ -377,9 +377,7 @@ int main(int argc, char** argv)
terminal.context_menu().add_separator();
terminal.context_menu().add_action(open_settings_action);
auto menubar = GUI::Menubar::construct();
auto& file_menu = menubar->add_menu("&File");
auto& file_menu = window->add_menu("&File");
file_menu.add_action(GUI::Action::create("Open New &Terminal", { Mod_Ctrl | Mod_Shift, Key_N }, Gfx::Bitmap::try_load_from_file("/res/icons/16x16/app-terminal.png"), [&](auto&) {
pid_t child;
const char* argv[] = { "Terminal", nullptr };
@ -398,7 +396,7 @@ int main(int argc, char** argv)
GUI::Application::the()->quit();
}));
auto& edit_menu = menubar->add_menu("&Edit");
auto& edit_menu = window->add_menu("&Edit");
edit_menu.add_action(terminal.copy_action());
edit_menu.add_action(terminal.paste_action());
edit_menu.add_separator();
@ -410,7 +408,7 @@ int main(int argc, char** argv)
find_window->move_to_front();
}));
auto& view_menu = menubar->add_menu("&View");
auto& view_menu = window->add_menu("&View");
view_menu.add_action(GUI::CommonActions::make_fullscreen_action([&](auto&) {
window->set_fullscreen(!window->is_fullscreen());
}));
@ -418,14 +416,12 @@ int main(int argc, char** argv)
view_menu.add_separator();
view_menu.add_action(pick_font_action);
auto& help_menu = menubar->add_menu("&Help");
auto& help_menu = window->add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_help_action([](auto&) {
Desktop::Launcher::open(URL::create_with_file_protocol("/usr/share/man/man1/Terminal.md"), "/bin/Help");
}));
help_menu.add_action(GUI::CommonActions::make_about_action("Terminal", app_icon, window));
window->set_menubar(menubar);
window->on_close = [&]() {
if (find_window)
find_window->close();

View file

@ -369,9 +369,9 @@ Web::OutOfProcessWebView& MainWidget::ensure_web_view()
return *m_page_view;
}
void MainWidget::initialize_menubar(GUI::Menubar& menubar)
void MainWidget::initialize_menubar(GUI::Window& window)
{
auto& file_menu = menubar.add_menu("&File");
auto& file_menu = window.add_menu("&File");
file_menu.add_action(*m_new_action);
file_menu.add_action(*m_open_action);
file_menu.add_action(*m_save_action);
@ -383,7 +383,7 @@ void MainWidget::initialize_menubar(GUI::Menubar& menubar)
GUI::Application::the()->quit();
}));
auto& edit_menu = menubar.add_menu("&Edit");
auto& edit_menu = window.add_menu("&Edit");
edit_menu.add_action(m_editor->undo_action());
edit_menu.add_action(m_editor->redo_action());
edit_menu.add_separator();
@ -449,7 +449,7 @@ void MainWidget::initialize_menubar(GUI::Menubar& menubar)
m_layout_ruler_action->set_checked(show_ruler);
m_editor->set_ruler_visible(show_ruler);
auto& view_menu = menubar.add_menu("&View");
auto& view_menu = window.add_menu("&View");
auto& layout_menu = view_menu.add_submenu("&Layout");
layout_menu.add_action(*m_layout_toolbar_action);
layout_menu.add_action(*m_layout_statusbar_action);
@ -459,7 +459,7 @@ void MainWidget::initialize_menubar(GUI::Menubar& menubar)
view_menu.add_action(GUI::Action::create("Editor &Font...", Gfx::Bitmap::try_load_from_file("/res/icons/16x16/app-font-editor.png"),
[&](auto&) {
auto picker = GUI::FontPicker::construct(window(), &m_editor->font(), false);
auto picker = GUI::FontPicker::construct(&window, &m_editor->font(), false);
if (picker->exec() == GUI::Dialog::ExecOK) {
dbgln("setting font {}", picker->font()->qualified_name());
m_editor->set_font(picker->font());
@ -605,11 +605,11 @@ void MainWidget::initialize_menubar(GUI::Menubar& menubar)
syntax_actions.add_action(*m_sql_highlight);
syntax_menu.add_action(*m_sql_highlight);
auto& help_menu = menubar.add_menu("&Help");
auto& help_menu = window.add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_help_action([](auto&) {
Desktop::Launcher::open(URL::create_with_file_protocol("/usr/share/man/man1/TextEditor.md"), "/bin/Help");
}));
help_menu.add_action(GUI::CommonActions::make_about_action("Text Editor", GUI::Icon::default_icon("app-text-editor"), window()));
help_menu.add_action(GUI::CommonActions::make_about_action("Text Editor", GUI::Icon::default_icon("app-text-editor"), &window));
}
void MainWidget::set_path(StringView const& path)

View file

@ -39,7 +39,7 @@ public:
void set_auto_detect_preview_mode(bool value) { m_auto_detect_preview_mode = value; }
void update_title();
void initialize_menubar(GUI::Menubar&);
void initialize_menubar(GUI::Window&);
private:
MainWidget();

View file

@ -102,9 +102,7 @@ int main(int argc, char** argv)
return 1;
}
auto menubar = GUI::Menubar::construct();
text_widget.initialize_menubar(menubar);
window->set_menubar(menubar);
text_widget.initialize_menubar(*window);
if (file_to_edit) {
// A file name was passed, parse any possible line and column numbers included.
@ -126,7 +124,5 @@ int main(int argc, char** argv)
window->show();
window->set_icon(app_icon.bitmap_for_size(16));
window->set_menubar(menubar);
return app->exec();
}

View file

@ -76,12 +76,11 @@ int main(int argc, char** argv)
Gfx::Palette preview_palette = app->palette();
auto window = GUI::Window::construct();
auto menubar = GUI::Menubar::construct();
auto& file_menu = menubar->add_menu("&File");
auto& file_menu = window->add_menu("&File");
file_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("Theme Editor", app_icon, window));
auto& main_widget = window->set_main_widget<GUI::Widget>();
@ -120,7 +119,6 @@ int main(int argc, char** argv)
window->resize(480, 385);
window->set_resizable(false);
window->set_menubar(menubar);
window->show();
window->set_title("Theme Editor");
window->set_icon(app_icon.bitmap_for_size(16));

View file

@ -241,8 +241,7 @@ int main(int argc, char** argv)
auto app_icon = GUI::Icon::default_icon("app-cube");
window->set_icon(app_icon.bitmap_for_size(16));
auto menubar = GUI::Menubar::construct();
auto& file_menu = menubar->add_menu("&File");
auto& file_menu = window->add_menu("&File");
auto show_window_frame_action = GUI::Action::create_checkable("Show Window &Frame", [&](auto& action) {
cube.set_show_window_frame(action.is_checked());
});
@ -252,9 +251,8 @@ int main(int argc, char** argv)
file_menu.add_action(move(show_window_frame_action));
file_menu.add_separator();
file_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("Cube Demo", app_icon, window));
window->set_menubar(move(menubar));
cube.on_context_menu_request = [&](auto& event) {
file_menu.popup(event.screen_position());

View file

@ -79,14 +79,12 @@ int main(int argc, char* argv[])
auto& eyes = window->set_main_widget<EyesWidget>(num_eyes, full_rows, extra_columns);
auto menubar = GUI::Menubar::construct();
auto& file_menu = menubar->add_menu("&File");
auto& file_menu = window->add_menu("&File");
file_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("Eyes Demo", app_icon, window));
window->set_menubar(move(menubar));
window->show();
eyes.track_cursor_globally();

View file

@ -221,10 +221,8 @@ int main(int argc, char** argv)
window->set_resizable(false);
window->resize(FIRE_WIDTH * 2 + 4, FIRE_HEIGHT * 2 + 4);
auto menubar = GUI::Menubar::construct();
auto& file_menu = menubar->add_menu("&File");
auto& file_menu = window->add_menu("&File");
file_menu.add_action(GUI::CommonActions::make_quit_action([&](auto&) { app->quit(); }));
window->set_menubar(move(menubar));
auto& fire = window->set_main_widget<Fire>();

View file

@ -207,10 +207,8 @@ int main(int argc, char** argv)
window->set_resizable(false);
window->resize(WIDTH, HEIGHT);
auto menubar = GUI::Menubar::construct();
auto& file_menu = menubar->add_menu("&File");
auto& file_menu = window->add_menu("&File");
file_menu.add_action(GUI::CommonActions::make_quit_action([&](auto&) { app->quit(); }));
window->set_menubar(move(menubar));
auto app_icon = GUI::Icon::default_icon("app-libgfx-demo");
window->set_icon(app_icon.bitmap_for_size(16));

View file

@ -126,10 +126,8 @@ int main(int argc, char** argv)
window->set_resizable(false);
window->resize(WIDTH * 2, HEIGHT * 3);
auto menubar = GUI::Menubar::construct();
auto& file_menu = menubar->add_menu("&File");
auto& file_menu = window->add_menu("&File");
file_menu.add_action(GUI::CommonActions::make_quit_action([&](auto&) { app->quit(); }));
window->set_menubar(move(menubar));
auto app_icon = GUI::Icon::default_icon("app-libgfx-demo");
window->set_icon(app_icon.bitmap_for_size(16));

View file

@ -262,8 +262,7 @@ int main(int argc, char** argv)
window->resize(window->minimum_size() * 2);
auto& mandelbrot = window->set_main_widget<Mandelbrot>();
auto menubar = GUI::Menubar::construct();
auto& file_menu = menubar->add_menu("&File");
auto& file_menu = window->add_menu("&File");
file_menu.add_action(GUI::Action::create("&Export...", { Mod_Ctrl | Mod_Shift, Key_S }, Gfx::Bitmap::try_load_from_file("/res/icons/16x16/save.png"),
[&](GUI::Action&) {
Optional<String> export_path = GUI::FilePicker::get_save_filepath(window, "untitled", "png");
@ -273,7 +272,6 @@ int main(int argc, char** argv)
}));
file_menu.add_separator();
file_menu.add_action(GUI::CommonActions::make_quit_action([&](auto&) { app->quit(); }));
window->set_menubar(move(menubar));
window->show();
auto app_icon = GUI::Icon::default_icon("app-mandelbrot");

View file

@ -177,14 +177,12 @@ int main(int argc, char** argv)
auto& main_widget = window->set_main_widget<MainFrame>();
main_widget.set_fill_with_background_color(true);
auto menubar = GUI::Menubar::construct();
auto& file_menu = menubar->add_menu("&File");
auto& file_menu = window->add_menu("&File");
file_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("Mouse Demo", app_icon, window));
window->set_menubar(move(menubar));
window->set_resizable(false);
window->show();
return app->exec();

View file

@ -55,15 +55,12 @@ int main(int argc, char** argv)
window->set_icon(app_icon.bitmap_for_size(16));
window->set_main_widget<GalleryWidget>();
auto menubar = GUI::Menubar::construct();
auto& file_menu = menubar->add_menu("&File");
auto& file_menu = window->add_menu("&File");
file_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("Widget Gallery", app_icon, window));
window->set_menubar(move(menubar));
window->show();
return app->exec();

View file

@ -922,9 +922,9 @@ void HackStudioWidget::create_project_tab(GUI::Widget& parent)
};
}
void HackStudioWidget::create_file_menubar(GUI::Menubar& menubar)
void HackStudioWidget::create_file_menu(GUI::Window& window)
{
auto& file_menu = menubar.add_menu("&File");
auto& file_menu = window.add_menu("&File");
file_menu.add_action(*m_new_project_action);
file_menu.add_action(*m_open_action);
file_menu.add_action(*m_save_action);
@ -934,16 +934,16 @@ void HackStudioWidget::create_file_menubar(GUI::Menubar& menubar)
}));
}
void HackStudioWidget::create_project_menubar(GUI::Menubar& menubar)
void HackStudioWidget::create_project_menu(GUI::Window& window)
{
auto& project_menu = menubar.add_menu("&Project");
auto& project_menu = window.add_menu("&Project");
project_menu.add_action(*m_new_file_action);
project_menu.add_action(*m_new_directory_action);
}
void HackStudioWidget::create_edit_menubar(GUI::Menubar& menubar)
void HackStudioWidget::create_edit_menu(GUI::Window& window)
{
auto& edit_menu = menubar.add_menu("&Edit");
auto& edit_menu = window.add_menu("&Edit");
edit_menu.add_action(GUI::Action::create("&Find in Files...", { Mod_Ctrl | Mod_Shift, Key_F }, Gfx::Bitmap::try_load_from_file("/res/icons/16x16/find.png"), [this](auto&) {
reveal_action_tab(*m_find_in_files_widget);
m_find_in_files_widget->focus_textbox_and_select_all();
@ -961,9 +961,9 @@ void HackStudioWidget::create_edit_menubar(GUI::Menubar& menubar)
edit_menu.add_action(vim_emulation_setting_action);
}
void HackStudioWidget::create_build_menubar(GUI::Menubar& menubar)
void HackStudioWidget::create_build_menu(GUI::Window& window)
{
auto& build_menu = menubar.add_menu("&Build");
auto& build_menu = window.add_menu("&Build");
build_menu.add_action(*m_build_action);
build_menu.add_separator();
build_menu.add_action(*m_run_action);
@ -972,7 +972,7 @@ void HackStudioWidget::create_build_menubar(GUI::Menubar& menubar)
build_menu.add_action(*m_debug_action);
}
void HackStudioWidget::create_view_menubar(GUI::Menubar& menubar)
void HackStudioWidget::create_view_menu(GUI::Window& window)
{
auto hide_action_tabs_action = GUI::Action::create("&Hide Action Tabs", { Mod_Ctrl | Mod_Shift, Key_X }, [this](auto&) {
hide_action_tabs();
@ -981,7 +981,7 @@ void HackStudioWidget::create_view_menubar(GUI::Menubar& menubar)
m_locator->open();
});
auto& view_menu = menubar.add_menu("&View");
auto& view_menu = window.add_menu("&View");
view_menu.add_action(hide_action_tabs_action);
view_menu.add_action(open_locator_action);
view_menu.add_separator();
@ -1018,10 +1018,10 @@ void HackStudioWidget::create_view_menubar(GUI::Menubar& menubar)
view_menu.add_action(*m_remove_current_terminal_action);
}
void HackStudioWidget::create_help_menubar(GUI::Menubar& menubar)
void HackStudioWidget::create_help_menu(GUI::Window& window)
{
auto& help_menu = menubar.add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_about_action("Hack Studio", GUI::Icon::default_icon("app-hack-studio"), window()));
auto& help_menu = window.add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_about_action("Hack Studio", GUI::Icon::default_icon("app-hack-studio"), &window));
}
NonnullRefPtr<GUI::Action> HackStudioWidget::create_stop_action()
@ -1039,14 +1039,14 @@ NonnullRefPtr<GUI::Action> HackStudioWidget::create_stop_action()
return action;
}
void HackStudioWidget::initialize_menubar(GUI::Menubar& menubar)
void HackStudioWidget::initialize_menubar(GUI::Window& window)
{
create_file_menubar(menubar);
create_project_menubar(menubar);
create_edit_menubar(menubar);
create_build_menubar(menubar);
create_view_menubar(menubar);
create_help_menubar(menubar);
create_file_menu(window);
create_project_menu(window);
create_edit_menu(window);
create_build_menu(window);
create_view_menu(window);
create_help_menu(window);
}
void HackStudioWidget::update_statusbar()

View file

@ -42,7 +42,7 @@ public:
void set_current_editor_wrapper(RefPtr<EditorWrapper>);
const String& active_file() const { return m_current_editor_wrapper->filename(); }
void initialize_menubar(GUI::Menubar&);
void initialize_menubar(GUI::Window&);
Locator& locator()
{
@ -104,12 +104,12 @@ private:
void create_open_files_view(GUI::Widget& parent);
void create_toolbar(GUI::Widget& parent);
void create_action_tab(GUI::Widget& parent);
void create_file_menubar(GUI::Menubar&);
void create_project_menubar(GUI::Menubar&);
void create_edit_menubar(GUI::Menubar&);
void create_build_menubar(GUI::Menubar&);
void create_view_menubar(GUI::Menubar&);
void create_help_menubar(GUI::Menubar&);
void create_file_menu(GUI::Window&);
void create_project_menu(GUI::Window&);
void create_edit_menu(GUI::Window&);
void create_build_menu(GUI::Window&);
void create_view_menu(GUI::Window&);
void create_help_menu(GUI::Window&);
void create_project_tab(GUI::Widget& parent);
void configure_project_tree_view();

View file

@ -66,9 +66,7 @@ int main(int argc, char** argv)
s_window->set_title(String::formatted("{} - Hack Studio", s_hack_studio_widget->project().name()));
auto menubar = GUI::Menubar::construct();
s_hack_studio_widget->initialize_menubar(menubar);
s_window->set_menubar(menubar);
s_hack_studio_widget->initialize_menubar(*s_window);
s_window->on_close_request = [&]() -> GUI::Window::CloseRequestDecision {
s_hack_studio_widget->locator().close();

View file

@ -113,12 +113,10 @@ int main(int argc, char** argv)
window->resize(685, 500);
window->set_icon(app_icon.bitmap_for_size(16));
auto menubar = GUI::Menubar::construct();
auto& file_menu = menubar->add_menu("&File");
auto& file_menu = window->add_menu("&File");
file_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_help_action([](auto&) {
Desktop::Launcher::open(URL::create_with_file_protocol("/usr/share/man/man1/Inspector.md"), "/bin/Help");
}));
@ -172,7 +170,6 @@ int main(int argc, char** argv)
}
};
window->set_menubar(move(menubar));
window->show();
remote_process.update();

View file

@ -156,8 +156,7 @@ int main(int argc, char** argv)
update_title();
};
auto menubar = GUI::Menubar::construct();
auto& file_menu = menubar->add_menu("&File");
auto& file_menu = window->add_menu("&File");
auto save_as_action = GUI::CommonActions::make_save_as_action([&](auto&) {
Optional<String> new_save_path = GUI::FilePicker::get_save_filepath(window, "Untitled", "gml");
@ -223,7 +222,7 @@ int main(int argc, char** argv)
app->quit();
}));
auto& edit_menu = menubar->add_menu("&Edit");
auto& edit_menu = window->add_menu("&Edit");
edit_menu.add_action(GUI::Action::create("&Format GML", { Mod_Ctrl | Mod_Shift, Key_I }, [&](auto&) {
auto source = editor.text();
GUI::GMLLexer lexer(source);
@ -252,13 +251,12 @@ int main(int argc, char** argv)
}
}));
auto& help_menu = menubar->add_menu("&Help");
auto& help_menu = window->add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_help_action([](auto&) {
Desktop::Launcher::open(URL::create_with_file_protocol("/usr/share/man/man1/Playground.md"), "/bin/Help");
}));
help_menu.add_action(GUI::CommonActions::make_about_action("GML Playground", app_icon, window));
window->set_menubar(move(menubar));
window->on_close_request = [&] {
if (!window->is_modified())
return GUI::Window::CloseRequestDecision::Close;

View file

@ -191,11 +191,10 @@ int main(int argc, char** argv)
statusbar.set_text(builder.to_string());
};
auto menubar = GUI::Menubar::construct();
auto& file_menu = menubar->add_menu("&File");
auto& file_menu = window->add_menu("&File");
file_menu.add_action(GUI::CommonActions::make_quit_action([&](auto&) { app->quit(); }));
auto& view_menu = menubar->add_menu("&View");
auto& view_menu = window->add_menu("&View");
auto invert_action = GUI::Action::create_checkable("&Invert Tree", { Mod_Ctrl, Key_I }, [&](auto& action) {
profile->set_inverted(action.is_checked());
@ -219,13 +218,12 @@ int main(int argc, char** argv)
view_menu.add_action(disassembly_action);
auto& help_menu = menubar->add_menu("&Help");
auto& help_menu = window->add_menu("&Help");
help_menu.add_action(GUI::CommonActions::make_help_action([](auto&) {
Desktop::Launcher::open(URL::create_with_file_protocol("/usr/share/man/man1/Profiler.md"), "/bin/Help");
}));
help_menu.add_action(GUI::CommonActions::make_about_action("Profiler", app_icon, window));
window->set_menubar(move(menubar));
window->show();
return app->exec();
}

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();

View file

@ -1130,6 +1130,13 @@ Gfx::Bitmap* Window::back_bitmap()
return m_back_store ? &m_back_store->bitmap() : nullptr;
}
Menu& Window::add_menu(String name)
{
if (!m_menubar)
set_menubar(GUI::Menubar::construct());
return m_menubar->add_menu(move(name));
}
void Window::set_menubar(RefPtr<Menubar> menubar)
{
if (m_menubar == menubar)

View file

@ -200,6 +200,7 @@ public:
void did_disable_focused_widget(Badge<Widget>);
Menu& add_menu(String name);
void set_menubar(RefPtr<Menubar>);
protected: