diff --git a/Userland/Games/Flood/CMakeLists.txt b/Userland/Games/Flood/CMakeLists.txt index 7ca43fe1e6..6737cb6c27 100644 --- a/Userland/Games/Flood/CMakeLists.txt +++ b/Userland/Games/Flood/CMakeLists.txt @@ -4,20 +4,17 @@ serenity_component( TARGETS Flood ) -stringify_gml(FloodWindow.gml FloodWindowGML.h flood_window_gml) -stringify_gml(SettingsDialog.gml SettingsDialogGML.h settings_dialog_gml) +compile_gml(FloodWindow.gml FloodWindowGML.cpp) +compile_gml(SettingsWidget.gml SettingsWidgetGML.cpp) set(SOURCES Board.cpp BoardWidget.cpp + FloodWindowGML.cpp SettingsDialog.cpp + SettingsWidgetGML.cpp main.cpp ) -set(GENERATED_SOURCES - FloodWindowGML.h - SettingsDialogGML.h -) - serenity_app(Flood ICON app-flood) target_link_libraries(Flood PRIVATE LibConfig LibCore LibDesktop LibGfx LibGUI LibMain) diff --git a/Userland/Games/Flood/FloodWindow.gml b/Userland/Games/Flood/FloodWindow.gml index 17703a0abb..a556732a44 100644 --- a/Userland/Games/Flood/FloodWindow.gml +++ b/Userland/Games/Flood/FloodWindow.gml @@ -1,4 +1,4 @@ -@GUI::Frame { +@Flood::MainWidget { fill_with_background_color: true layout: @GUI::VerticalBoxLayout {} diff --git a/Userland/Games/Flood/MainWidget.h b/Userland/Games/Flood/MainWidget.h new file mode 100644 index 0000000000..09889ab6dc --- /dev/null +++ b/Userland/Games/Flood/MainWidget.h @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2023, the SerenityOS developers + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include + +namespace Flood { + +class MainWidget : public GUI::Widget { + C_OBJECT_ABSTRACT(MainWidget) +public: + static ErrorOr> try_create(); + virtual ~MainWidget() override = default; + +private: + MainWidget() = default; +}; + +} diff --git a/Userland/Games/Flood/SettingsDialog.cpp b/Userland/Games/Flood/SettingsDialog.cpp index e63e5ef9c6..d927acbac4 100644 --- a/Userland/Games/Flood/SettingsDialog.cpp +++ b/Userland/Games/Flood/SettingsDialog.cpp @@ -7,7 +7,6 @@ #include "SettingsDialog.h" #include #include -#include #include #include #include @@ -19,13 +18,12 @@ ErrorOr> SettingsDialog::try_create(GUI::Window* parent, size_t board_rows, size_t board_columns) { - auto settings_widget = GUI::Widget::construct(); - TRY(settings_widget->load_from_gml(settings_dialog_gml)); + auto settings_widget = TRY(Flood::SettingsWidget::try_create()); auto settings_dialog = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) SettingsDialog(move(settings_widget), move(parent), move(board_rows), move(board_columns)))); return settings_dialog; } -SettingsDialog::SettingsDialog(NonnullRefPtr settings_widget, GUI::Window* parent, size_t board_rows, size_t board_columns) +SettingsDialog::SettingsDialog(NonnullRefPtr settings_widget, GUI::Window* parent, size_t board_rows, size_t board_columns) : GUI::Dialog(parent) , m_board_rows(board_rows) , m_board_columns(board_columns) diff --git a/Userland/Games/Flood/SettingsDialog.h b/Userland/Games/Flood/SettingsDialog.h index 95dde32476..15d133e2f6 100644 --- a/Userland/Games/Flood/SettingsDialog.h +++ b/Userland/Games/Flood/SettingsDialog.h @@ -6,6 +6,7 @@ #pragma once +#include "SettingsWidget.h" #include #include @@ -17,7 +18,7 @@ public: size_t board_columns() const { return m_board_columns; } private: - SettingsDialog(NonnullRefPtr settings_widget, GUI::Window* parent, size_t board_rows, size_t board_columns); + SettingsDialog(NonnullRefPtr settings_widget, GUI::Window* parent, size_t board_rows, size_t board_columns); size_t m_board_rows; size_t m_board_columns; diff --git a/Userland/Games/Flood/SettingsDialog.gml b/Userland/Games/Flood/SettingsWidget.gml similarity index 97% rename from Userland/Games/Flood/SettingsDialog.gml rename to Userland/Games/Flood/SettingsWidget.gml index f743f2e17c..3a365b99e2 100644 --- a/Userland/Games/Flood/SettingsDialog.gml +++ b/Userland/Games/Flood/SettingsWidget.gml @@ -1,4 +1,4 @@ -@GUI::Frame { +@Flood::SettingsWidget { fill_with_background_color: true layout: @GUI::VerticalBoxLayout { margins: [4] diff --git a/Userland/Games/Flood/SettingsWidget.h b/Userland/Games/Flood/SettingsWidget.h new file mode 100644 index 0000000000..e7532d1f4a --- /dev/null +++ b/Userland/Games/Flood/SettingsWidget.h @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2023, the SerenityOS developers + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include + +namespace Flood { + +class SettingsWidget : public GUI::Widget { + C_OBJECT_ABSTRACT(SettingsWidget) +public: + static ErrorOr> try_create(); + virtual ~SettingsWidget() override = default; + +private: + SettingsWidget() = default; +}; + +} diff --git a/Userland/Games/Flood/main.cpp b/Userland/Games/Flood/main.cpp index 2611684f5b..457685038d 100644 --- a/Userland/Games/Flood/main.cpp +++ b/Userland/Games/Flood/main.cpp @@ -5,9 +5,9 @@ */ #include "BoardWidget.h" +#include "MainWidget.h" #include "SettingsDialog.h" #include -#include #include #include #include @@ -82,8 +82,8 @@ ErrorOr serenity_main(Main::Arguments arguments) window->set_title("Flood"); window->resize(304, 325); - auto main_widget = TRY(window->set_main_widget()); - TRY(main_widget->load_from_gml(flood_window_gml)); + auto main_widget = TRY(Flood::MainWidget::try_create()); + window->set_main_widget(main_widget); auto board_widget = TRY(main_widget->find_descendant_of_type_named("board_widget_container")->try_add(board_rows, board_columns)); board_widget->board()->randomize();