diff --git a/Userland/Games/GameOfLife/CMakeLists.txt b/Userland/Games/GameOfLife/CMakeLists.txt index 9a5977dd2a..51f6ece7db 100644 --- a/Userland/Games/GameOfLife/CMakeLists.txt +++ b/Userland/Games/GameOfLife/CMakeLists.txt @@ -4,18 +4,15 @@ serenity_component( TARGETS GameOfLife ) -stringify_gml(GameOfLife.gml GameOfLifeGML.h game_of_life_gml) +compile_gml(GameOfLife.gml GameOfLifeGML.cpp) set(SOURCES main.cpp Board.cpp BoardWidget.cpp + GameOfLifeGML.cpp Pattern.cpp ) -set(GENERATED_SOURCES - GameOfLifeGML.h -) - serenity_app(GameOfLife ICON app-gameoflife) target_link_libraries(GameOfLife PRIVATE LibCore LibGfx LibGUI LibMain LibDesktop) diff --git a/Userland/Games/GameOfLife/GameOfLife.gml b/Userland/Games/GameOfLife/GameOfLife.gml index b94d815872..d438e4447c 100644 --- a/Userland/Games/GameOfLife/GameOfLife.gml +++ b/Userland/Games/GameOfLife/GameOfLife.gml @@ -1,4 +1,4 @@ -@GUI::Widget { +@GameOfLife::MainWidget { layout: @GUI::VerticalBoxLayout {} @GUI::ToolbarContainer { diff --git a/Userland/Games/GameOfLife/MainWidget.h b/Userland/Games/GameOfLife/MainWidget.h new file mode 100644 index 0000000000..3e43f6ec72 --- /dev/null +++ b/Userland/Games/GameOfLife/MainWidget.h @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2023, Tim Ledbetter + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include + +namespace GameOfLife { + +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/GameOfLife/main.cpp b/Userland/Games/GameOfLife/main.cpp index 28513b2379..1b2ea8e37d 100644 --- a/Userland/Games/GameOfLife/main.cpp +++ b/Userland/Games/GameOfLife/main.cpp @@ -6,9 +6,9 @@ */ #include "BoardWidget.h" +#include "MainWidget.h" #include #include -#include #include #include #include @@ -53,8 +53,8 @@ ErrorOr serenity_main(Main::Arguments arguments) window->set_double_buffering_enabled(false); window->set_title("Game of Life"); - auto main_widget = window->set_main_widget(); - TRY(main_widget->load_from_gml(game_of_life_gml)); + auto main_widget = TRY(GameOfLife::MainWidget::try_create()); + window->set_main_widget(main_widget); main_widget->set_fill_with_background_color(true); auto& main_toolbar = *main_widget->find_descendant_of_type_named("toolbar");