1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 03:27:45 +00:00

3DFileViewer: Propagate errors using try_set_main_widget in main

This commit is contained in:
creator1creeper1 2022-01-07 14:31:18 +01:00 committed by Andreas Kling
parent deed6388ef
commit c60f05b28e

View file

@ -311,15 +311,15 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
window->resize(640 + 4, 480 + 4); window->resize(640 + 4, 480 + 4);
window->set_resizable(false); window->set_resizable(false);
window->set_double_buffering_enabled(true); window->set_double_buffering_enabled(true);
auto& widget = window->set_main_widget<GLContextWidget>(); auto widget = TRY(window->try_set_main_widget<GLContextWidget>());
auto& time = widget.add<GUI::Label>(); auto& time = widget->add<GUI::Label>();
time.set_visible(false); time.set_visible(false);
time.set_foreground_role(ColorRole::HoverHighlight); time.set_foreground_role(ColorRole::HoverHighlight);
time.set_relative_rect({ 0, 8, 100, 10 }); time.set_relative_rect({ 0, 8, 100, 10 });
time.set_text_alignment(Gfx::TextAlignment::CenterRight); time.set_text_alignment(Gfx::TextAlignment::CenterRight);
time.set_x(widget.width() - time.width() - 6); time.set_x(widget->width() - time.width() - 6);
widget.set_stat_label(time); widget->set_stat_label(time);
auto& file_menu = window->add_menu("&File"); auto& file_menu = window->add_menu("&File");
@ -329,7 +329,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
if (result.error != 0) if (result.error != 0)
return; return;
if (widget.load_fd_and_close(*result.fd, *result.chosen_file)) { if (widget->load_fd_and_close(*result.fd, *result.chosen_file)) {
auto canonical_path = Core::File::absolute_path(*result.chosen_file); auto canonical_path = Core::File::absolute_path(*result.chosen_file);
window->set_title(String::formatted("{} - 3D File Viewer", canonical_path)); window->set_title(String::formatted("{} - 3D File Viewer", canonical_path));
} }
@ -346,13 +346,13 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
auto& rotation_axis_menu = view_menu.add_submenu("Rotation &Axis"); auto& rotation_axis_menu = view_menu.add_submenu("Rotation &Axis");
auto rotation_x_action = GUI::Action::create_checkable("&X", [&widget](auto&) { auto rotation_x_action = GUI::Action::create_checkable("&X", [&widget](auto&) {
widget.toggle_rotate_x(); widget->toggle_rotate_x();
}); });
auto rotation_y_action = GUI::Action::create_checkable("&Y", [&widget](auto&) { auto rotation_y_action = GUI::Action::create_checkable("&Y", [&widget](auto&) {
widget.toggle_rotate_y(); widget->toggle_rotate_y();
}); });
auto rotation_z_action = GUI::Action::create_checkable("&Z", [&widget](auto&) { auto rotation_z_action = GUI::Action::create_checkable("&Z", [&widget](auto&) {
widget.toggle_rotate_z(); widget->toggle_rotate_z();
}); });
rotation_axis_menu.add_action(*rotation_x_action); rotation_axis_menu.add_action(*rotation_x_action);
@ -367,16 +367,16 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
rotation_speed_actions.set_exclusive(true); rotation_speed_actions.set_exclusive(true);
auto no_rotation_action = GUI::Action::create_checkable("N&o Rotation", [&widget](auto&) { auto no_rotation_action = GUI::Action::create_checkable("N&o Rotation", [&widget](auto&) {
widget.set_rotation_speed(0.f); widget->set_rotation_speed(0.f);
}); });
auto slow_rotation_action = GUI::Action::create_checkable("&Slow", [&widget](auto&) { auto slow_rotation_action = GUI::Action::create_checkable("&Slow", [&widget](auto&) {
widget.set_rotation_speed(30.f); widget->set_rotation_speed(30.f);
}); });
auto normal_rotation_action = GUI::Action::create_checkable("&Normal", [&widget](auto&) { auto normal_rotation_action = GUI::Action::create_checkable("&Normal", [&widget](auto&) {
widget.set_rotation_speed(60.f); widget->set_rotation_speed(60.f);
}); });
auto fast_rotation_action = GUI::Action::create_checkable("&Fast", [&widget](auto&) { auto fast_rotation_action = GUI::Action::create_checkable("&Fast", [&widget](auto&) {
widget.set_rotation_speed(90.f); widget->set_rotation_speed(90.f);
}); });
rotation_speed_actions.add_action(*no_rotation_action); rotation_speed_actions.add_action(*no_rotation_action);
@ -392,7 +392,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
normal_rotation_action->set_checked(true); normal_rotation_action->set_checked(true);
auto show_frame_rate_action = GUI::Action::create_checkable("Show Frame &Rate", [&widget](auto&) { auto show_frame_rate_action = GUI::Action::create_checkable("Show Frame &Rate", [&widget](auto&) {
widget.toggle_show_frame_rate(); widget->toggle_show_frame_rate();
}); });
view_menu.add_action(*show_frame_rate_action); view_menu.add_action(*show_frame_rate_action);
@ -400,7 +400,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
auto& texture_menu = window->add_menu("&Texture"); auto& texture_menu = window->add_menu("&Texture");
auto texture_enabled_action = GUI::Action::create_checkable("&Enable Texture", [&widget](auto& action) { auto texture_enabled_action = GUI::Action::create_checkable("&Enable Texture", [&widget](auto& action) {
widget.set_texture_enabled(action.is_checked()); widget->set_texture_enabled(action.is_checked());
}); });
texture_enabled_action->set_checked(true); texture_enabled_action->set_checked(true);
texture_menu.add_action(texture_enabled_action); texture_menu.add_action(texture_enabled_action);
@ -410,13 +410,13 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
wrap_s_actions.set_exclusive(true); wrap_s_actions.set_exclusive(true);
auto wrap_u_repeat_action = GUI::Action::create_checkable("&Repeat", [&widget](auto&) { auto wrap_u_repeat_action = GUI::Action::create_checkable("&Repeat", [&widget](auto&) {
widget.set_wrap_s_mode(GL_REPEAT); widget->set_wrap_s_mode(GL_REPEAT);
}); });
auto wrap_u_mirrored_repeat_action = GUI::Action::create_checkable("&Mirrored Repeat", [&widget](auto&) { auto wrap_u_mirrored_repeat_action = GUI::Action::create_checkable("&Mirrored Repeat", [&widget](auto&) {
widget.set_wrap_s_mode(GL_MIRRORED_REPEAT); widget->set_wrap_s_mode(GL_MIRRORED_REPEAT);
}); });
auto wrap_u_clamp_action = GUI::Action::create_checkable("&Clamp", [&widget](auto&) { auto wrap_u_clamp_action = GUI::Action::create_checkable("&Clamp", [&widget](auto&) {
widget.set_wrap_s_mode(GL_CLAMP); widget->set_wrap_s_mode(GL_CLAMP);
}); });
wrap_s_actions.add_action(*wrap_u_repeat_action); wrap_s_actions.add_action(*wrap_u_repeat_action);
@ -434,13 +434,13 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
wrap_t_actions.set_exclusive(true); wrap_t_actions.set_exclusive(true);
auto wrap_t_repeat_action = GUI::Action::create_checkable("&Repeat", [&widget](auto&) { auto wrap_t_repeat_action = GUI::Action::create_checkable("&Repeat", [&widget](auto&) {
widget.set_wrap_t_mode(GL_REPEAT); widget->set_wrap_t_mode(GL_REPEAT);
}); });
auto wrap_t_mirrored_repeat_action = GUI::Action::create_checkable("&Mirrored Repeat", [&widget](auto&) { auto wrap_t_mirrored_repeat_action = GUI::Action::create_checkable("&Mirrored Repeat", [&widget](auto&) {
widget.set_wrap_t_mode(GL_MIRRORED_REPEAT); widget->set_wrap_t_mode(GL_MIRRORED_REPEAT);
}); });
auto wrap_t_clamp_action = GUI::Action::create_checkable("&Clamp", [&widget](auto&) { auto wrap_t_clamp_action = GUI::Action::create_checkable("&Clamp", [&widget](auto&) {
widget.set_wrap_t_mode(GL_CLAMP); widget->set_wrap_t_mode(GL_CLAMP);
}); });
wrap_t_actions.add_action(*wrap_t_repeat_action); wrap_t_actions.add_action(*wrap_t_repeat_action);
@ -458,23 +458,23 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
texture_scale_actions.set_exclusive(true); texture_scale_actions.set_exclusive(true);
auto texture_scale_025_action = GUI::Action::create_checkable("0.25x", [&widget](auto&) { auto texture_scale_025_action = GUI::Action::create_checkable("0.25x", [&widget](auto&) {
widget.set_texture_scale(0.25f); widget->set_texture_scale(0.25f);
}); });
auto texture_scale_05_action = GUI::Action::create_checkable("0.5x", [&widget](auto&) { auto texture_scale_05_action = GUI::Action::create_checkable("0.5x", [&widget](auto&) {
widget.set_texture_scale(0.5f); widget->set_texture_scale(0.5f);
}); });
auto texture_scale_1_action = GUI::Action::create_checkable("1x", [&widget](auto&) { auto texture_scale_1_action = GUI::Action::create_checkable("1x", [&widget](auto&) {
widget.set_texture_scale(1); widget->set_texture_scale(1);
}); });
auto texture_scale_2_action = GUI::Action::create_checkable("2x", [&widget](auto&) { auto texture_scale_2_action = GUI::Action::create_checkable("2x", [&widget](auto&) {
widget.set_texture_scale(2); widget->set_texture_scale(2);
}); });
auto texture_scale_4_action = GUI::Action::create_checkable("4x", [&widget](auto&) { auto texture_scale_4_action = GUI::Action::create_checkable("4x", [&widget](auto&) {
widget.set_texture_scale(4); widget->set_texture_scale(4);
}); });
texture_scale_actions.add_action(*texture_scale_025_action); texture_scale_actions.add_action(*texture_scale_025_action);
@ -496,11 +496,11 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
texture_mag_filter_actions.set_exclusive(true); texture_mag_filter_actions.set_exclusive(true);
auto texture_mag_filter_nearest_action = GUI::Action::create_checkable("&Nearest", [&widget](auto&) { auto texture_mag_filter_nearest_action = GUI::Action::create_checkable("&Nearest", [&widget](auto&) {
widget.set_mag_filter(GL_NEAREST); widget->set_mag_filter(GL_NEAREST);
}); });
auto texture_mag_filter_linear_action = GUI::Action::create_checkable("&Linear", [&widget](auto&) { auto texture_mag_filter_linear_action = GUI::Action::create_checkable("&Linear", [&widget](auto&) {
widget.set_mag_filter(GL_LINEAR); widget->set_mag_filter(GL_LINEAR);
}); });
texture_mag_filter_actions.add_action(*texture_mag_filter_nearest_action); texture_mag_filter_actions.add_action(*texture_mag_filter_nearest_action);
@ -517,7 +517,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
window->show(); window->show();
auto filename = arguments.argc > 1 ? arguments.argv[1] : "/home/anon/Documents/3D Models/teapot.obj"; auto filename = arguments.argc > 1 ? arguments.argv[1] : "/home/anon/Documents/3D Models/teapot.obj";
if (widget.load_path(filename)) { if (widget->load_path(filename)) {
auto canonical_path = Core::File::absolute_path(filename); auto canonical_path = Core::File::absolute_path(filename);
window->set_title(String::formatted("{} - 3D File Viewer", canonical_path)); window->set_title(String::formatted("{} - 3D File Viewer", canonical_path));
} }