Skip to content

Commit

Permalink
LibGUI: Add MenuBar::add_menu(name)
Browse files Browse the repository at this point in the history
This allows us to construct menus in a more natural way:

    auto& file_menu = menubar->add_menu("File");
    file_menu.add_action(...);

Instead of the old way:

    auto file_menu = GUI::Menu::construct();
    file_menu->add_action(...);
    menubar->add_menu(file_menu);
  • Loading branch information
awesomekling committed Apr 4, 2020
1 parent faac435 commit 26eeaef
Show file tree
Hide file tree
Showing 26 changed files with 271 additions and 341 deletions.
39 changes: 17 additions & 22 deletions Applications/Browser/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -226,21 +226,20 @@ int main(int argc, char** argv)

auto menubar = make<GUI::MenuBar>();

auto app_menu = GUI::Menu::construct("Browser");
app_menu->add_action(GUI::Action::create("Reload", { Mod_None, Key_F5 }, Gfx::Bitmap::load_from_file("/res/icons/16x16/reload.png"), [&](auto&) {
auto& app_menu = menubar->add_menu("Browser");
app_menu.add_action(GUI::Action::create("Reload", { Mod_None, Key_F5 }, Gfx::Bitmap::load_from_file("/res/icons/16x16/reload.png"), [&](auto&) {
TemporaryChange<bool> change(should_push_loads_to_history, false);
html_widget.reload();
}));
app_menu->add_separator();
app_menu->add_action(GUI::CommonActions::make_quit_action([&](auto&) {
app_menu.add_separator();
app_menu.add_action(GUI::CommonActions::make_quit_action([&](auto&) {
app.quit();
}));
menubar->add_menu(move(app_menu));

RefPtr<GUI::Window> dom_inspector_window;

auto inspect_menu = GUI::Menu::construct("Inspect");
inspect_menu->add_action(GUI::Action::create("View source", { Mod_Ctrl, Key_U }, [&](auto&) {
auto& inspect_menu = menubar->add_menu("Inspect");
inspect_menu.add_action(GUI::Action::create("View source", { Mod_Ctrl, Key_U }, [&](auto&) {
String filename_to_open;
char tmp_filename[] = "/tmp/view-source.XXXXXX";
ASSERT(html_widget.document());
Expand All @@ -259,7 +258,7 @@ int main(int argc, char** argv)
ASSERT_NOT_REACHED();
}
}));
inspect_menu->add_action(GUI::Action::create("Inspect DOM tree", { Mod_None, Key_F12 }, [&](auto&) {
inspect_menu.add_action(GUI::Action::create("Inspect DOM tree", { Mod_None, Key_F12 }, [&](auto&) {
if (!dom_inspector_window) {
dom_inspector_window = GUI::Window::construct();
dom_inspector_window->set_rect(100, 100, 300, 500);
Expand All @@ -271,47 +270,43 @@ int main(int argc, char** argv)
dom_inspector_window->show();
dom_inspector_window->move_to_front();
}));
menubar->add_menu(move(inspect_menu));

auto debug_menu = GUI::Menu::construct("Debug");
debug_menu->add_action(GUI::Action::create("Dump DOM tree", [&](auto&) {
auto& debug_menu = menubar->add_menu("Debug");
debug_menu.add_action(GUI::Action::create("Dump DOM tree", [&](auto&) {
dump_tree(*html_widget.document());
}));
debug_menu->add_action(GUI::Action::create("Dump Layout tree", [&](auto&) {
debug_menu.add_action(GUI::Action::create("Dump Layout tree", [&](auto&) {
dump_tree(*html_widget.document()->layout_node());
}));
debug_menu->add_action(GUI::Action::create("Dump Style sheets", [&](auto&) {
debug_menu.add_action(GUI::Action::create("Dump Style sheets", [&](auto&) {
for (auto& sheet : html_widget.document()->stylesheets()) {
dump_sheet(sheet);
}
}));
debug_menu->add_separator();
debug_menu.add_separator();
auto line_box_borders_action = GUI::Action::create("Line box borders", [&](auto& action) {
action.set_checked(!action.is_checked());
html_widget.set_should_show_line_box_borders(action.is_checked());
html_widget.update();
});
line_box_borders_action->set_checkable(true);
line_box_borders_action->set_checked(false);
debug_menu->add_action(line_box_borders_action);
menubar->add_menu(move(debug_menu));
debug_menu.add_action(line_box_borders_action);

auto bookmarks_menu = GUI::Menu::construct("Bookmarks");
auto& bookmarks_menu = menubar->add_menu("Bookmarks");
auto show_bookmarksbar_action = GUI::Action::create("Show bookmarks bar", [&](auto& action) {
action.set_checked(!action.is_checked());
bookmarksbar.set_visible(action.is_checked());
bookmarksbar.update();
});
show_bookmarksbar_action->set_checkable(true);
show_bookmarksbar_action->set_checked(bookmarksbar_enabled);
bookmarks_menu->add_action(show_bookmarksbar_action);
menubar->add_menu(move(bookmarks_menu));
bookmarks_menu.add_action(show_bookmarksbar_action);

auto help_menu = GUI::Menu::construct("Help");
help_menu->add_action(GUI::Action::create("About", [&](const GUI::Action&) {
auto& help_menu = menubar->add_menu("Help");
help_menu.add_action(GUI::Action::create("About", [&](const GUI::Action&) {
GUI::AboutDialog::show("Browser", Gfx::Bitmap::load_from_file("/res/icons/32x32/filetype-html.png"), window);
}));
menubar->add_menu(move(help_menu));

app.set_menubar(move(menubar));

Expand Down
10 changes: 4 additions & 6 deletions Applications/Calculator/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -67,18 +67,16 @@ int main(int argc, char** argv)

auto menubar = make<GUI::MenuBar>();

auto app_menu = GUI::Menu::construct("Calculator");
app_menu->add_action(GUI::CommonActions::make_quit_action([](auto&) {
auto& app_menu = menubar->add_menu("Calculator");
app_menu.add_action(GUI::CommonActions::make_quit_action([](auto&) {
GUI::Application::the().quit(0);
return;
}));
menubar->add_menu(move(app_menu));

auto help_menu = GUI::Menu::construct("Help");
help_menu->add_action(GUI::Action::create("About", [&](const GUI::Action&) {
auto& help_menu = menubar->add_menu("Help");
help_menu.add_action(GUI::Action::create("About", [&](const GUI::Action&) {
GUI::AboutDialog::show("Calculator", Gfx::Bitmap::load_from_file("/res/icons/16x16/app-calculator.png"), window);
}));
menubar->add_menu(move(help_menu));

app.set_menubar(move(menubar));

Expand Down
5 changes: 2 additions & 3 deletions Applications/Calendar/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -66,12 +66,11 @@ int main(int argc, char** argv)

auto menubar = make<GUI::MenuBar>();

auto app_menu = GUI::Menu::construct("Calendar");
app_menu->add_action(GUI::CommonActions::make_quit_action([](auto&) {
auto& app_menu = menubar->add_menu("Calendar");
app_menu.add_action(GUI::CommonActions::make_quit_action([](auto&) {
GUI::Application::the().quit(0);
return;
}));
menubar->add_menu(move(app_menu));
app.set_menubar(move(menubar));

app.exec();
Expand Down
10 changes: 4 additions & 6 deletions Applications/ChanViewer/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -94,18 +94,16 @@ int main(int argc, char** argv)

auto menubar = make<GUI::MenuBar>();

auto app_menu = GUI::Menu::construct("ChanViewer");
app_menu->add_action(GUI::CommonActions::make_quit_action([](auto&) {
auto& app_menu = menubar->add_menu("ChanViewer");
app_menu.add_action(GUI::CommonActions::make_quit_action([](auto&) {
GUI::Application::the().quit(0);
return;
}));
menubar->add_menu(move(app_menu));

auto help_menu = GUI::Menu::construct("Help");
help_menu->add_action(GUI::Action::create("About", [&](const GUI::Action&) {
auto& help_menu = menubar->add_menu("Help");
help_menu.add_action(GUI::Action::create("About", [&](const GUI::Action&) {
GUI::AboutDialog::show("ChanViewer", Gfx::Bitmap::load_from_file("/res/icons/32x32/app-chanviewer.png"), window);
}));
menubar->add_menu(move(help_menu));

app.set_menubar(move(menubar));

Expand Down
11 changes: 4 additions & 7 deletions Applications/DisplayProperties/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,20 +60,17 @@ int main(int argc, char** argv)
window->set_main_widget(instance.root_widget());
window->set_icon(Gfx::Bitmap::load_from_file("/res/icons/16x16/app-display-properties.png"));

// Let's create the menubar first
auto menubar = make<GUI::MenuBar>();

auto app_menu = GUI::Menu::construct("Display Properties");
app_menu->add_action(GUI::CommonActions::make_quit_action([&](const GUI::Action&) {
auto& app_menu = menubar->add_menu("Display Properties");
app_menu.add_action(GUI::CommonActions::make_quit_action([&](const GUI::Action&) {
app.quit();
}));
menubar->add_menu(move(app_menu));

auto help_menu = GUI::Menu::construct("Help");
help_menu->add_action(GUI::Action::create("About", [&](const GUI::Action&) {
auto& help_menu = menubar->add_menu("Help");
help_menu.add_action(GUI::Action::create("About", [&](const GUI::Action&) {
GUI::AboutDialog::show("Display Properties", Gfx::Bitmap::load_from_file("/res/icons/32x32/app-display-properties.png"), window);
}));
menubar->add_menu(move(help_menu));

app.set_menubar(move(menubar));
window->show();
Expand Down
46 changes: 21 additions & 25 deletions Applications/FileManager/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -457,35 +457,31 @@ int main(int argc, char** argv)

auto menubar = make<GUI::MenuBar>();

auto app_menu = GUI::Menu::construct("File Manager");
app_menu->add_action(mkdir_action);
app_menu->add_action(copy_action);
app_menu->add_action(paste_action);
app_menu->add_action(delete_action);
app_menu->add_separator();
app_menu->add_action(GUI::CommonActions::make_quit_action([](auto&) {
auto& app_menu = menubar->add_menu("File Manager");
app_menu.add_action(mkdir_action);
app_menu.add_action(copy_action);
app_menu.add_action(paste_action);
app_menu.add_action(delete_action);
app_menu.add_separator();
app_menu.add_action(GUI::CommonActions::make_quit_action([](auto&) {
GUI::Application::the().quit(0);
}));
menubar->add_menu(move(app_menu));

auto view_menu = GUI::Menu::construct("View");
view_menu->add_action(*view_as_icons_action);
view_menu->add_action(*view_as_table_action);
view_menu->add_action(*view_as_columns_action);
menubar->add_menu(move(view_menu));

auto go_menu = GUI::Menu::construct("Go");
go_menu->add_action(go_back_action);
go_menu->add_action(go_forward_action);
go_menu->add_action(open_parent_directory_action);
go_menu->add_action(go_home_action);
menubar->add_menu(move(go_menu));

auto help_menu = GUI::Menu::construct("Help");
help_menu->add_action(GUI::Action::create("About", [&](const GUI::Action&) {

auto& view_menu = menubar->add_menu("View");
view_menu.add_action(*view_as_icons_action);
view_menu.add_action(*view_as_table_action);
view_menu.add_action(*view_as_columns_action);

auto& go_menu = menubar->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);
go_menu.add_action(go_home_action);

auto& help_menu = menubar->add_menu("Help");
help_menu.add_action(GUI::Action::create("About", [&](auto&) {
GUI::AboutDialog::show("File Manager", Gfx::Bitmap::load_from_file("/res/icons/32x32/filetype-folder.png"), window);
}));
menubar->add_menu(move(help_menu));

app.set_menubar(move(menubar));

Expand Down
10 changes: 4 additions & 6 deletions Applications/FontEditor/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,18 +76,16 @@ int main(int argc, char** argv)

auto menubar = make<GUI::MenuBar>();

auto app_menu = GUI::Menu::construct("Font Editor");
app_menu->add_action(GUI::CommonActions::make_quit_action([](auto&) {
auto& app_menu = menubar->add_menu("Font Editor");
app_menu.add_action(GUI::CommonActions::make_quit_action([](auto&) {
GUI::Application::the().quit(0);
return;
}));
menubar->add_menu(move(app_menu));

auto help_menu = GUI::Menu::construct("Help");
help_menu->add_action(GUI::Action::create("About", [&](const GUI::Action&) {
auto& help_menu = menubar->add_menu("Help");
help_menu.add_action(GUI::Action::create("About", [&](const GUI::Action&) {
GUI::AboutDialog::show("Font Editor", Gfx::Bitmap::load_from_file("/res/icons/FontEditor.png"), window);
}));
menubar->add_menu(move(help_menu));

app.set_menubar(move(menubar));

Expand Down
16 changes: 7 additions & 9 deletions Applications/Help/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -179,20 +179,18 @@ int main(int argc, char* argv[])

auto menubar = make<GUI::MenuBar>();

auto app_menu = GUI::Menu::construct("Help");
app_menu->add_action(GUI::Action::create("About", [&](const GUI::Action&) {
auto& app_menu = menubar->add_menu("Help");
app_menu.add_action(GUI::Action::create("About", [&](const GUI::Action&) {
GUI::AboutDialog::show("Help", Gfx::Bitmap::load_from_file("/res/icons/16x16/book.png"), window);
}));
app_menu->add_separator();
app_menu->add_action(GUI::CommonActions::make_quit_action([](auto&) {
app_menu.add_separator();
app_menu.add_action(GUI::CommonActions::make_quit_action([](auto&) {
GUI::Application::the().quit(0);
}));
menubar->add_menu(move(app_menu));

auto go_menu = GUI::Menu::construct("Go");
go_menu->add_action(*go_back_action);
go_menu->add_action(*go_forward_action);
menubar->add_menu(move(go_menu));
auto& go_menu = menubar->add_menu("Go");
go_menu.add_action(*go_back_action);
go_menu.add_action(*go_forward_action);

app.set_menubar(move(menubar));

Expand Down
46 changes: 21 additions & 25 deletions Applications/HexEditor/HexEditorWidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -133,18 +133,17 @@ HexEditorWidget::HexEditorWidget()
});

auto menubar = make<GUI::MenuBar>();
auto app_menu = GUI::Menu::construct("Hex Editor");
app_menu->add_action(*m_new_action);
app_menu->add_action(*m_open_action);
app_menu->add_action(*m_save_action);
app_menu->add_action(*m_save_as_action);
app_menu->add_separator();
app_menu->add_action(GUI::CommonActions::make_quit_action([this](auto&) {
auto& app_menu = menubar->add_menu("Hex Editor");
app_menu.add_action(*m_new_action);
app_menu.add_action(*m_open_action);
app_menu.add_action(*m_save_action);
app_menu.add_action(*m_save_as_action);
app_menu.add_separator();
app_menu.add_action(GUI::CommonActions::make_quit_action([this](auto&) {
if (!request_close())
return;
GUI::Application::the().quit(0);
}));
menubar->add_menu(move(app_menu));

auto bytes_per_row_menu = GUI::Menu::construct("Bytes Per Row");
for (int i = 8; i <= 32; i += 8) {
Expand Down Expand Up @@ -173,39 +172,36 @@ HexEditorWidget::HexEditorWidget()
}
});

auto edit_menu = GUI::Menu::construct("Edit");
edit_menu->add_action(GUI::Action::create("Fill selection...", { Mod_Ctrl, Key_B }, [&](const GUI::Action&) {
auto& edit_menu = menubar->add_menu("Edit");
edit_menu.add_action(GUI::Action::create("Fill selection...", { Mod_Ctrl, Key_B }, [&](const GUI::Action&) {
auto input_box = GUI::InputBox::construct("Fill byte (hex):", "Fill Selection", window());
if (input_box->exec() == GUI::InputBox::ExecOK && !input_box->text_value().is_empty()) {
auto fill_byte = strtol(input_box->text_value().characters(), nullptr, 16);
m_editor->fill_selection(fill_byte);
}
}));
edit_menu->add_separator();
edit_menu->add_action(*m_goto_decimal_offset_action);
edit_menu->add_action(*m_goto_hex_offset_action);
edit_menu->add_separator();
edit_menu->add_action(GUI::Action::create("Copy Hex", { Mod_Ctrl, Key_C }, [&](const GUI::Action&) {
edit_menu.add_separator();
edit_menu.add_action(*m_goto_decimal_offset_action);
edit_menu.add_action(*m_goto_hex_offset_action);
edit_menu.add_separator();
edit_menu.add_action(GUI::Action::create("Copy Hex", { Mod_Ctrl, Key_C }, [&](const GUI::Action&) {
m_editor->copy_selected_hex_to_clipboard();
}));
edit_menu->add_action(GUI::Action::create("Copy Text", { Mod_Ctrl | Mod_Shift, Key_C }, [&](const GUI::Action&) {
edit_menu.add_action(GUI::Action::create("Copy Text", { Mod_Ctrl | Mod_Shift, Key_C }, [&](const GUI::Action&) {
m_editor->copy_selected_text_to_clipboard();
}));
edit_menu->add_separator();
edit_menu->add_action(GUI::Action::create("Copy As C Code", { Mod_Alt | Mod_Shift, Key_C }, [&](const GUI::Action&) {
edit_menu.add_separator();
edit_menu.add_action(GUI::Action::create("Copy As C Code", { Mod_Alt | Mod_Shift, Key_C }, [&](const GUI::Action&) {
m_editor->copy_selected_hex_to_clipboard_as_c_code();
}));
menubar->add_menu(move(edit_menu));

auto view_menu = GUI::Menu::construct("View");
view_menu->add_submenu(move(bytes_per_row_menu));
menubar->add_menu(move(view_menu));
auto& view_menu = menubar->add_menu("View");
view_menu.add_submenu(move(bytes_per_row_menu));

auto help_menu = GUI::Menu::construct("Help");
help_menu->add_action(GUI::Action::create("About", [&](const GUI::Action&) {
auto& help_menu = menubar->add_menu("Help");
help_menu.add_action(GUI::Action::create("About", [&](auto&) {
GUI::AboutDialog::show("Hex Editor", Gfx::Bitmap::load_from_file("/res/icons/32x32/app-hexeditor.png"), window());
}));
menubar->add_menu(move(help_menu));

GUI::Application::the().set_menubar(move(menubar));

Expand Down
Loading

0 comments on commit 26eeaef

Please sign in to comment.