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

WidgetGallery: Use TRY() a lot more :^)

This commit is contained in:
pbrw 2021-11-25 02:57:22 +01:00 committed by Andreas Kling
parent bd61558ed8
commit 4d03852190
3 changed files with 52 additions and 50 deletions

View file

@ -16,7 +16,7 @@ DemoWizardDialog::DemoWizardDialog(GUI::Window* parent_window)
: GUI::WizardDialog(parent_window) : GUI::WizardDialog(parent_window)
{ {
// Create the front cover // Create the front cover
m_front_page = GUI::CoverWizardPage::construct(); m_front_page = GUI::CoverWizardPage::try_create().release_value_but_fixme_should_propagate_errors();
m_front_page->set_header_text("Welcome to the SerenityOS demo wizard!"); m_front_page->set_header_text("Welcome to the SerenityOS demo wizard!");
m_front_page->set_body_text("This wizard demonstrates the amazing wizardry\ncapabilities of LibGUI :^)"); m_front_page->set_body_text("This wizard demonstrates the amazing wizardry\ncapabilities of LibGUI :^)");
m_front_page->on_next_page = [&]() { m_front_page->on_next_page = [&]() {
@ -24,9 +24,10 @@ DemoWizardDialog::DemoWizardDialog(GUI::Window* parent_window)
}; };
// Create Page 1 // Create Page 1
m_page_1 = GUI::WizardPage::construct( m_page_1 = GUI::WizardPage::try_create(
"Installation location", "Installation location",
"Choose where Demo Application is installed on your computer."); "Choose where Demo Application is installed on your computer.")
.release_value_but_fixme_should_propagate_errors();
m_page_1->body_widget().load_from_gml(demo_wizard_page_1_gml); m_page_1->body_widget().load_from_gml(demo_wizard_page_1_gml);
m_page_1_location_text_box = m_page_1->body_widget().find_descendant_of_type_named<GUI::TextBox>("page_1_location_text_box"); m_page_1_location_text_box = m_page_1->body_widget().find_descendant_of_type_named<GUI::TextBox>("page_1_location_text_box");
m_page_1->on_next_page = [&]() { m_page_1->on_next_page = [&]() {
@ -34,12 +35,13 @@ DemoWizardDialog::DemoWizardDialog(GUI::Window* parent_window)
}; };
// Create Page 2 with a progress bar :^) // Create Page 2 with a progress bar :^)
m_page_2 = GUI::WizardPage::construct( m_page_2 = GUI::WizardPage::try_create(
"Installation in progress...", "Installation in progress...",
"Please wait. Do not turn off your computer."); "Please wait. Do not turn off your computer.")
.release_value_but_fixme_should_propagate_errors();
m_page_2->body_widget().load_from_gml(demo_wizard_page_2_gml); m_page_2->body_widget().load_from_gml(demo_wizard_page_2_gml);
m_page_2_progressbar = m_page_2->body_widget().find_descendant_of_type_named<GUI::Progressbar>("page_2_progressbar"); m_page_2_progressbar = m_page_2->body_widget().find_descendant_of_type_named<GUI::Progressbar>("page_2_progressbar");
m_page_2_timer = Core::Timer::construct(this); m_page_2_timer = Core::Timer::try_create(this).release_value_but_fixme_should_propagate_errors();
m_page_2->on_page_enter = [&]() { m_page_2->on_page_enter = [&]() {
m_page_2_progress_value = 0; m_page_2_progress_value = 0;
m_page_2_timer->restart(100); m_page_2_timer->restart(100);
@ -62,7 +64,7 @@ DemoWizardDialog::DemoWizardDialog(GUI::Window* parent_window)
// Don't set a on_next_page handler for page 2 as we automatically navigate to the final page on progress completion // Don't set a on_next_page handler for page 2 as we automatically navigate to the final page on progress completion
// Create the back cover // Create the back cover
m_back_page = GUI::CoverWizardPage::construct(); m_back_page = GUI::CoverWizardPage::try_create().release_value_but_fixme_should_propagate_errors();
m_back_page->set_header_text("Wizard complete."); m_back_page->set_header_text("Wizard complete.");
m_back_page->set_body_text("That concludes the SerenityOS demo wizard :^)"); m_back_page->set_body_text("That concludes the SerenityOS demo wizard :^)");
m_back_page->set_is_final_page(true); m_back_page->set_is_final_page(true);

View file

@ -36,11 +36,11 @@ GalleryWidget::GalleryWidget()
auto& tab_widget = *find_descendant_of_type_named<GUI::TabWidget>("tab_widget"); auto& tab_widget = *find_descendant_of_type_named<GUI::TabWidget>("tab_widget");
tab_widget.set_reorder_allowed(true); tab_widget.set_reorder_allowed(true);
auto& basics_tab = tab_widget.add_tab<GUI::Widget>("Basics"); auto basics_tab = tab_widget.try_add_tab<GUI::Widget>("Basics").release_value_but_fixme_should_propagate_errors();
basics_tab.load_from_gml(basics_tab_gml); basics_tab->load_from_gml(basics_tab_gml);
m_enabled_label = basics_tab.find_descendant_of_type_named<GUI::Label>("enabled_label"); m_enabled_label = basics_tab->find_descendant_of_type_named<GUI::Label>("enabled_label");
m_label_frame = basics_tab.find_descendant_of_type_named<GUI::Frame>("label_frame"); m_label_frame = basics_tab->find_descendant_of_type_named<GUI::Frame>("label_frame");
m_frame_shapes.append("No Frame"); m_frame_shapes.append("No Frame");
m_frame_shapes.append("Plain Box"); m_frame_shapes.append("Plain Box");
@ -53,7 +53,7 @@ GalleryWidget::GalleryWidget()
m_frame_shapes.append("Sunken Container"); m_frame_shapes.append("Sunken Container");
m_frame_shapes.append("Sunken Panel"); m_frame_shapes.append("Sunken Panel");
m_frame_shape_combobox = basics_tab.find_descendant_of_type_named<GUI::ComboBox>("frame_shape_combobox"); m_frame_shape_combobox = basics_tab->find_descendant_of_type_named<GUI::ComboBox>("frame_shape_combobox");
m_frame_shape_combobox->set_model(*GUI::ItemListModel<String>::create(m_frame_shapes)); m_frame_shape_combobox->set_model(*GUI::ItemListModel<String>::create(m_frame_shapes));
m_frame_shape_combobox->on_change = [&](auto&, const auto& index) { m_frame_shape_combobox->on_change = [&](auto&, const auto& index) {
@ -66,7 +66,7 @@ GalleryWidget::GalleryWidget()
m_enabled_label->set_text(m_frame_shape_combobox->text()); m_enabled_label->set_text(m_frame_shape_combobox->text());
}; };
m_thickness_spinbox = basics_tab.find_descendant_of_type_named<GUI::SpinBox>("thickness_spinbox"); m_thickness_spinbox = basics_tab->find_descendant_of_type_named<GUI::SpinBox>("thickness_spinbox");
m_thickness_spinbox->set_value(1); m_thickness_spinbox->set_value(1);
m_thickness_spinbox->on_change = [&](auto value) { m_thickness_spinbox->on_change = [&](auto value) {
@ -77,10 +77,10 @@ GalleryWidget::GalleryWidget()
m_button_icons.append(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/inspector-object.png").release_value_but_fixme_should_propagate_errors()); m_button_icons.append(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/inspector-object.png").release_value_but_fixme_should_propagate_errors());
m_button_icons.append(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/ladybug.png").release_value_but_fixme_should_propagate_errors()); m_button_icons.append(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/ladybug.png").release_value_but_fixme_should_propagate_errors());
m_icon_button = basics_tab.find_descendant_of_type_named<GUI::Button>("icon_button"); m_icon_button = basics_tab->find_descendant_of_type_named<GUI::Button>("icon_button");
m_icon_button->set_icon(*m_button_icons[2]); m_icon_button->set_icon(*m_button_icons[2]);
m_disabled_icon_button = basics_tab.find_descendant_of_type_named<GUI::Button>("disabled_icon_button"); m_disabled_icon_button = basics_tab->find_descendant_of_type_named<GUI::Button>("disabled_icon_button");
m_disabled_icon_button->set_icon(*m_button_icons[2]); m_disabled_icon_button->set_icon(*m_button_icons[2]);
m_icon_button->on_click = [&](auto) { m_icon_button->on_click = [&](auto) {
@ -92,19 +92,19 @@ GalleryWidget::GalleryWidget()
i++; i++;
}; };
m_text_editor = basics_tab.find_descendant_of_type_named<GUI::TextEditor>("text_editor"); m_text_editor = basics_tab->find_descendant_of_type_named<GUI::TextEditor>("text_editor");
m_font_button = basics_tab.find_descendant_of_type_named<GUI::Button>("font_button"); m_font_button = basics_tab->find_descendant_of_type_named<GUI::Button>("font_button");
m_font_button->set_icon(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/app-font-editor.png").release_value_but_fixme_should_propagate_errors()); m_font_button->set_icon(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/app-font-editor.png").release_value_but_fixme_should_propagate_errors());
m_font_button->on_click = [&](auto) { m_font_button->on_click = [&](auto) {
auto picker = GUI::FontPicker::construct(window(), &m_text_editor->font(), false); auto picker = GUI::FontPicker::try_create(window(), &m_text_editor->font(), false).release_value_but_fixme_should_propagate_errors();
if (picker->exec() == GUI::Dialog::ExecOK) { if (picker->exec() == GUI::Dialog::ExecOK) {
m_text_editor->set_font(picker->font()); m_text_editor->set_font(picker->font());
} }
}; };
m_file_button = basics_tab.find_descendant_of_type_named<GUI::Button>("file_button"); m_file_button = basics_tab->find_descendant_of_type_named<GUI::Button>("file_button");
m_file_button->set_icon(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/open.png").release_value_but_fixme_should_propagate_errors()); m_file_button->set_icon(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/open.png").release_value_but_fixme_should_propagate_errors());
m_file_button->on_click = [&](auto) { m_file_button->on_click = [&](auto) {
@ -114,7 +114,7 @@ GalleryWidget::GalleryWidget()
m_text_editor->set_text(open_path.value()); m_text_editor->set_text(open_path.value());
}; };
m_input_button = basics_tab.find_descendant_of_type_named<GUI::Button>("input_button"); m_input_button = basics_tab->find_descendant_of_type_named<GUI::Button>("input_button");
m_input_button->set_icon(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/properties.png").release_value_but_fixme_should_propagate_errors()); m_input_button->set_icon(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/properties.png").release_value_but_fixme_should_propagate_errors());
m_input_button->on_click = [&](auto) { m_input_button->on_click = [&](auto) {
@ -123,7 +123,7 @@ GalleryWidget::GalleryWidget()
m_text_editor->set_text(value); m_text_editor->set_text(value);
}; };
m_font_colorinput = basics_tab.find_descendant_of_type_named<GUI::ColorInput>("font_colorinput"); m_font_colorinput = basics_tab->find_descendant_of_type_named<GUI::ColorInput>("font_colorinput");
m_font_colorinput->on_change = [&]() { m_font_colorinput->on_change = [&]() {
auto palette = m_text_editor->palette(); auto palette = m_text_editor->palette();
@ -132,7 +132,7 @@ GalleryWidget::GalleryWidget()
m_text_editor->update(); m_text_editor->update();
}; };
m_msgbox_button = basics_tab.find_descendant_of_type_named<GUI::Button>("msgbox_button"); m_msgbox_button = basics_tab->find_descendant_of_type_named<GUI::Button>("msgbox_button");
m_msgbox_button->set_icon(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/app-browser.png").release_value_but_fixme_should_propagate_errors()); m_msgbox_button->set_icon(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/app-browser.png").release_value_but_fixme_should_propagate_errors());
m_msgbox_type = GUI::MessageBox::Type::None; m_msgbox_type = GUI::MessageBox::Type::None;
@ -149,7 +149,7 @@ GalleryWidget::GalleryWidget()
m_msgbox_buttons.append("Yes No"); m_msgbox_buttons.append("Yes No");
m_msgbox_buttons.append("Yes No Cancel"); m_msgbox_buttons.append("Yes No Cancel");
m_msgbox_icon_combobox = basics_tab.find_descendant_of_type_named<GUI::ComboBox>("msgbox_icon_combobox"); m_msgbox_icon_combobox = basics_tab->find_descendant_of_type_named<GUI::ComboBox>("msgbox_icon_combobox");
m_msgbox_icon_combobox->set_model(*GUI::ItemListModel<String>::create(m_msgbox_icons)); m_msgbox_icon_combobox->set_model(*GUI::ItemListModel<String>::create(m_msgbox_icons));
m_msgbox_icon_combobox->set_selected_index(0); m_msgbox_icon_combobox->set_selected_index(0);
@ -157,7 +157,7 @@ GalleryWidget::GalleryWidget()
m_msgbox_type = static_cast<GUI::MessageBox::Type>(index.row()); m_msgbox_type = static_cast<GUI::MessageBox::Type>(index.row());
}; };
m_msgbox_buttons_combobox = basics_tab.find_descendant_of_type_named<GUI::ComboBox>("msgbox_buttons_combobox"); m_msgbox_buttons_combobox = basics_tab->find_descendant_of_type_named<GUI::ComboBox>("msgbox_buttons_combobox");
m_msgbox_buttons_combobox->set_model(*GUI::ItemListModel<String>::create(m_msgbox_buttons)); m_msgbox_buttons_combobox->set_model(*GUI::ItemListModel<String>::create(m_msgbox_buttons));
m_msgbox_buttons_combobox->set_selected_index(0); m_msgbox_buttons_combobox->set_selected_index(0);
@ -169,17 +169,17 @@ GalleryWidget::GalleryWidget()
GUI::MessageBox::show(window(), m_text_editor->text(), "Message", m_msgbox_type, m_msgbox_input_type); GUI::MessageBox::show(window(), m_text_editor->text(), "Message", m_msgbox_type, m_msgbox_input_type);
}; };
auto& sliders_tab = tab_widget.add_tab<GUI::Widget>("Sliders"); auto sliders_tab = tab_widget.try_add_tab<GUI::Widget>("Sliders").release_value_but_fixme_should_propagate_errors();
sliders_tab.load_from_gml(sliders_tab_gml); sliders_tab->load_from_gml(sliders_tab_gml);
m_vertical_progressbar_left = sliders_tab.find_descendant_of_type_named<GUI::VerticalProgressbar>("vertical_progressbar_left"); m_vertical_progressbar_left = sliders_tab->find_descendant_of_type_named<GUI::VerticalProgressbar>("vertical_progressbar_left");
m_vertical_progressbar_left->set_value(0); m_vertical_progressbar_left->set_value(0);
m_vertical_progressbar_right = sliders_tab.find_descendant_of_type_named<GUI::VerticalProgressbar>("vertical_progressbar_right"); m_vertical_progressbar_right = sliders_tab->find_descendant_of_type_named<GUI::VerticalProgressbar>("vertical_progressbar_right");
m_vertical_progressbar_right->set_value(100); m_vertical_progressbar_right->set_value(100);
m_vertical_slider_left = sliders_tab.find_descendant_of_type_named<GUI::VerticalSlider>("vertical_slider_left"); m_vertical_slider_left = sliders_tab->find_descendant_of_type_named<GUI::VerticalSlider>("vertical_slider_left");
m_vertical_slider_right = sliders_tab.find_descendant_of_type_named<GUI::VerticalSlider>("vertical_slider_right"); m_vertical_slider_right = sliders_tab->find_descendant_of_type_named<GUI::VerticalSlider>("vertical_slider_right");
m_vertical_slider_left->on_change = [&](auto value) { m_vertical_slider_left->on_change = [&](auto value) {
m_vertical_progressbar_left->set_value(m_vertical_slider_left->max() - value); m_vertical_progressbar_left->set_value(m_vertical_slider_left->max() - value);
@ -189,11 +189,11 @@ GalleryWidget::GalleryWidget()
m_vertical_progressbar_right->set_value((100 / m_vertical_slider_right->max()) * (m_vertical_slider_right->max() - value)); m_vertical_progressbar_right->set_value((100 / m_vertical_slider_right->max()) * (m_vertical_slider_right->max() - value));
}; };
m_horizontal_progressbar = sliders_tab.find_descendant_of_type_named<GUI::HorizontalProgressbar>("horizontal_progressbar"); m_horizontal_progressbar = sliders_tab->find_descendant_of_type_named<GUI::HorizontalProgressbar>("horizontal_progressbar");
m_horizontal_progressbar->set_value(0); m_horizontal_progressbar->set_value(0);
m_horizontal_slider_left = sliders_tab.find_descendant_of_type_named<GUI::HorizontalSlider>("horizontal_slider_left"); m_horizontal_slider_left = sliders_tab->find_descendant_of_type_named<GUI::HorizontalSlider>("horizontal_slider_left");
m_horizontal_slider_right = sliders_tab.find_descendant_of_type_named<GUI::HorizontalSlider>("horizontal_slider_right"); m_horizontal_slider_right = sliders_tab->find_descendant_of_type_named<GUI::HorizontalSlider>("horizontal_slider_right");
m_horizontal_slider_left->on_change = [&](auto value) { m_horizontal_slider_left->on_change = [&](auto value) {
m_horizontal_progressbar->set_value(value); m_horizontal_progressbar->set_value(value);
@ -206,23 +206,23 @@ GalleryWidget::GalleryWidget()
m_horizontal_slider_left->set_value((value * 100) / m_horizontal_slider_right->max()); m_horizontal_slider_left->set_value((value * 100) / m_horizontal_slider_right->max());
}; };
m_enabled_scrollbar = sliders_tab.find_descendant_of_type_named<GUI::Scrollbar>("enabled_scrollbar"); m_enabled_scrollbar = sliders_tab->find_descendant_of_type_named<GUI::Scrollbar>("enabled_scrollbar");
m_enabled_scrollbar->set_orientation(Orientation::Horizontal); m_enabled_scrollbar->set_orientation(Orientation::Horizontal);
m_disabled_scrollbar = sliders_tab.find_descendant_of_type_named<GUI::Scrollbar>("disabled_scrollbar"); m_disabled_scrollbar = sliders_tab->find_descendant_of_type_named<GUI::Scrollbar>("disabled_scrollbar");
m_disabled_scrollbar->set_orientation(Orientation::Horizontal); m_disabled_scrollbar->set_orientation(Orientation::Horizontal);
m_opacity_imagewidget = sliders_tab.find_descendant_of_type_named<GUI::ImageWidget>("opacity_imagewidget"); m_opacity_imagewidget = sliders_tab->find_descendant_of_type_named<GUI::ImageWidget>("opacity_imagewidget");
m_opacity_imagewidget->load_from_file("/res/graphics/brand-banner.png"); m_opacity_imagewidget->load_from_file("/res/graphics/brand-banner.png");
m_opacity_slider = sliders_tab.find_descendant_of_type_named<GUI::OpacitySlider>("opacity_slider"); m_opacity_slider = sliders_tab->find_descendant_of_type_named<GUI::OpacitySlider>("opacity_slider");
m_opacity_slider->on_change = [&](auto percent) { m_opacity_slider->on_change = [&](auto percent) {
m_opacity_imagewidget->set_opacity_percent(percent); m_opacity_imagewidget->set_opacity_percent(percent);
m_opacity_value_slider->set_value(percent); m_opacity_value_slider->set_value(percent);
}; };
m_opacity_value_slider = sliders_tab.find_descendant_of_type_named<GUI::ValueSlider>("opacity_value_slider"); m_opacity_value_slider = sliders_tab->find_descendant_of_type_named<GUI::ValueSlider>("opacity_value_slider");
m_opacity_value_slider->set_range(0, 100); m_opacity_value_slider->set_range(0, 100);
m_opacity_value_slider->on_change = [&](auto percent) { m_opacity_value_slider->on_change = [&](auto percent) {
@ -230,11 +230,11 @@ GalleryWidget::GalleryWidget()
m_opacity_slider->set_value(percent); m_opacity_slider->set_value(percent);
}; };
auto& wizards_tab = tab_widget.add_tab<GUI::Widget>("Wizards"); auto wizards_tab = tab_widget.try_add_tab<GUI::Widget>("Wizards").release_value_but_fixme_should_propagate_errors();
wizards_tab.load_from_gml(wizards_tab_gml); wizards_tab->load_from_gml(wizards_tab_gml);
m_wizard_button = wizards_tab.find_descendant_of_type_named<GUI::Button>("wizard_button"); m_wizard_button = wizards_tab->find_descendant_of_type_named<GUI::Button>("wizard_button");
m_wizard_output = wizards_tab.find_descendant_of_type_named<GUI::TextEditor>("wizard_output"); m_wizard_output = wizards_tab->find_descendant_of_type_named<GUI::TextEditor>("wizard_output");
m_wizard_output->set_should_hide_unnecessary_scrollbars(true); m_wizard_output->set_should_hide_unnecessary_scrollbars(true);
const char* serenityos_ascii = { const char* serenityos_ascii = {
@ -277,7 +277,7 @@ GalleryWidget::GalleryWidget()
sb.append("\nWizard started."); sb.append("\nWizard started.");
m_wizard_output->set_text(sb.to_string()); m_wizard_output->set_text(sb.to_string());
auto wizard = DemoWizardDialog::construct(window()); auto wizard = DemoWizardDialog::try_create(window()).release_value_but_fixme_should_propagate_errors();
int result = wizard->exec(); int result = wizard->exec();
sb.append(String::formatted("\nWizard execution complete.\nDialog ExecResult code: {}", result)); sb.append(String::formatted("\nWizard execution complete.\nDialog ExecResult code: {}", result));
@ -286,10 +286,10 @@ GalleryWidget::GalleryWidget()
m_wizard_output->set_text(sb.string_view()); m_wizard_output->set_text(sb.string_view());
}; };
auto& cursors_tab = tab_widget.add_tab<GUI::Widget>("Cursors"); auto cursors_tab = tab_widget.try_add_tab<GUI::Widget>("Cursors").release_value_but_fixme_should_propagate_errors();
cursors_tab.load_from_gml(cursors_tab_gml); cursors_tab->load_from_gml(cursors_tab_gml);
m_cursors_tableview = cursors_tab.find_descendant_of_type_named<GUI::TableView>("cursors_tableview"); m_cursors_tableview = cursors_tab->find_descendant_of_type_named<GUI::TableView>("cursors_tableview");
m_cursors_tableview->set_highlight_selected_rows(true); m_cursors_tableview->set_highlight_selected_rows(true);
m_cursors_tableview->set_alternating_row_colors(false); m_cursors_tableview->set_alternating_row_colors(false);
m_cursors_tableview->set_vertical_padding(16); m_cursors_tableview->set_vertical_padding(16);
@ -309,10 +309,10 @@ GalleryWidget::GalleryWidget()
m_cursors_tableview->set_override_cursor(NonnullRefPtr<Gfx::Bitmap>(icon_index.data().as_bitmap())); m_cursors_tableview->set_override_cursor(NonnullRefPtr<Gfx::Bitmap>(icon_index.data().as_bitmap()));
}; };
auto& icons_tab = tab_widget.add_tab<GUI::Widget>("Icons"); auto icons_tab = tab_widget.try_add_tab<GUI::Widget>("Icons").release_value_but_fixme_should_propagate_errors();
icons_tab.load_from_gml(icons_tab_gml); icons_tab->load_from_gml(icons_tab_gml);
m_icons_tableview = icons_tab.find_descendant_of_type_named<GUI::TableView>("icons_tableview"); m_icons_tableview = icons_tab->find_descendant_of_type_named<GUI::TableView>("icons_tableview");
m_icons_tableview->set_highlight_selected_rows(true); m_icons_tableview->set_highlight_selected_rows(true);
m_icons_tableview->set_alternating_row_colors(false); m_icons_tableview->set_alternating_row_colors(false);
m_icons_tableview->set_vertical_padding(24); m_icons_tableview->set_vertical_padding(24);

View file

@ -28,7 +28,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
window->resize(430, 480); window->resize(430, 480);
window->set_title("Widget Gallery"); window->set_title("Widget Gallery");
window->set_icon(app_icon.bitmap_for_size(16)); window->set_icon(app_icon.bitmap_for_size(16));
window->set_main_widget<GalleryWidget>(); TRY(window->try_set_main_widget<GalleryWidget>());
window->show(); window->show();
return app->exec(); return app->exec();