1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 13:17:35 +00:00

Spreadsheet: Propagate errors from SpreadsheetWidget::initialize_menubar

This commit is contained in:
Sam Atkins 2023-04-03 17:53:58 +01:00 committed by Andreas Kling
parent 1e275dd942
commit b746d324cf
3 changed files with 35 additions and 33 deletions

View file

@ -646,40 +646,42 @@ void SpreadsheetWidget::clipboard_action(bool is_cut)
GUI::Clipboard::the().set_data(text_builder.string_view().bytes(), "text/plain", move(metadata)); GUI::Clipboard::the().set_data(text_builder.string_view().bytes(), "text/plain", move(metadata));
} }
void SpreadsheetWidget::initialize_menubar(GUI::Window& window) ErrorOr<void> SpreadsheetWidget::initialize_menubar(GUI::Window& window)
{ {
auto& file_menu = window.add_menu("&File"); auto file_menu = TRY(window.try_add_menu("&File"));
file_menu.add_action(*m_new_action); TRY(file_menu->try_add_action(*m_new_action));
file_menu.add_action(*m_open_action); TRY(file_menu->try_add_action(*m_open_action));
file_menu.add_action(*m_save_action); TRY(file_menu->try_add_action(*m_save_action));
file_menu.add_action(*m_save_as_action); TRY(file_menu->try_add_action(*m_save_as_action));
file_menu.add_separator(); TRY(file_menu->try_add_separator());
file_menu.add_action(*m_import_action); TRY(file_menu->try_add_action(*m_import_action));
file_menu.add_separator(); TRY(file_menu->try_add_separator());
file_menu.add_recent_files_list([&](auto& action) { TRY(file_menu->add_recent_files_list([&](auto& action) {
if (!request_close()) if (!request_close())
return; return;
auto response = FileSystemAccessClient::Client::the().request_file_read_only_approved(&window, action.text()); auto response = FileSystemAccessClient::Client::the().request_file_read_only_approved(&window, action.text());
if (response.is_error()) if (response.is_error())
return; return;
load_file(response.value().filename(), response.value().stream()); load_file(response.value().filename(), response.value().stream());
}) }));
.release_value_but_fixme_should_propagate_errors(); TRY(file_menu->try_add_action(*m_quit_action));
file_menu.add_action(*m_quit_action);
auto& edit_menu = window.add_menu("&Edit"); auto edit_menu = TRY(window.try_add_menu("&Edit"));
edit_menu.add_action(*m_undo_action); TRY(edit_menu->try_add_action(*m_undo_action));
edit_menu.add_action(*m_redo_action); TRY(edit_menu->try_add_action(*m_redo_action));
edit_menu.add_separator(); TRY(edit_menu->try_add_separator());
edit_menu.add_action(*m_cut_action); TRY(edit_menu->try_add_action(*m_cut_action));
edit_menu.add_action(*m_copy_action); TRY(edit_menu->try_add_action(*m_copy_action));
edit_menu.add_action(*m_paste_action); TRY(edit_menu->try_add_action(*m_paste_action));
edit_menu.add_action(*m_insert_emoji_action); TRY(edit_menu->try_add_action(*m_insert_emoji_action));
auto& help_menu = window.add_menu("&Help"); auto help_menu = TRY(window.try_add_menu("&Help"));
help_menu.add_action(*m_search_action); TRY(help_menu->try_add_action(*m_search_action));
help_menu.add_action(*m_functions_help_action); TRY(help_menu->try_add_action(*m_functions_help_action));
help_menu.add_action(*m_about_action); TRY(help_menu->try_add_action(*m_about_action));
return {};
} }
} }

View file

@ -45,7 +45,7 @@ public:
return current_view()->cursor(); return current_view()->cursor();
} }
void initialize_menubar(GUI::Window&); ErrorOr<void> initialize_menubar(GUI::Window&);
void undo(); void undo();
void redo(); void redo();

View file

@ -57,7 +57,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
auto spreadsheet_widget = TRY(window->set_main_widget<Spreadsheet::SpreadsheetWidget>(*window, Vector<NonnullRefPtr<Spreadsheet::Sheet>> {}, filename.is_empty())); auto spreadsheet_widget = TRY(window->set_main_widget<Spreadsheet::SpreadsheetWidget>(*window, Vector<NonnullRefPtr<Spreadsheet::Sheet>> {}, filename.is_empty()));
spreadsheet_widget->initialize_menubar(*window); TRY(spreadsheet_widget->initialize_menubar(*window));
spreadsheet_widget->update_window_title(); spreadsheet_widget->update_window_title();
window->on_close_request = [&]() -> GUI::Window::CloseRequestDecision { window->on_close_request = [&]() -> GUI::Window::CloseRequestDecision {