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

GameOfLife: Use the GML compiler

This commit is contained in:
Tim Ledbetter 2023-09-27 23:28:49 +01:00 committed by Andreas Kling
parent 3930702bd2
commit 649c7ee11f
4 changed files with 29 additions and 9 deletions

View file

@ -4,18 +4,15 @@ serenity_component(
TARGETS GameOfLife TARGETS GameOfLife
) )
stringify_gml(GameOfLife.gml GameOfLifeGML.h game_of_life_gml) compile_gml(GameOfLife.gml GameOfLifeGML.cpp)
set(SOURCES set(SOURCES
main.cpp main.cpp
Board.cpp Board.cpp
BoardWidget.cpp BoardWidget.cpp
GameOfLifeGML.cpp
Pattern.cpp Pattern.cpp
) )
set(GENERATED_SOURCES
GameOfLifeGML.h
)
serenity_app(GameOfLife ICON app-gameoflife) serenity_app(GameOfLife ICON app-gameoflife)
target_link_libraries(GameOfLife PRIVATE LibCore LibGfx LibGUI LibMain LibDesktop) target_link_libraries(GameOfLife PRIVATE LibCore LibGfx LibGUI LibMain LibDesktop)

View file

@ -1,4 +1,4 @@
@GUI::Widget { @GameOfLife::MainWidget {
layout: @GUI::VerticalBoxLayout {} layout: @GUI::VerticalBoxLayout {}
@GUI::ToolbarContainer { @GUI::ToolbarContainer {

View file

@ -0,0 +1,23 @@
/*
* Copyright (c) 2023, Tim Ledbetter <timledbetter@gmail.com>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <LibGUI/Widget.h>
namespace GameOfLife {
class MainWidget : public GUI::Widget {
C_OBJECT_ABSTRACT(MainWidget)
public:
static ErrorOr<NonnullRefPtr<MainWidget>> try_create();
virtual ~MainWidget() override = default;
private:
MainWidget() = default;
};
}

View file

@ -6,9 +6,9 @@
*/ */
#include "BoardWidget.h" #include "BoardWidget.h"
#include "MainWidget.h"
#include <AK/Try.h> #include <AK/Try.h>
#include <AK/URL.h> #include <AK/URL.h>
#include <Games/GameOfLife/GameOfLifeGML.h>
#include <LibCore/System.h> #include <LibCore/System.h>
#include <LibDesktop/Launcher.h> #include <LibDesktop/Launcher.h>
#include <LibGUI/Application.h> #include <LibGUI/Application.h>
@ -53,8 +53,8 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
window->set_double_buffering_enabled(false); window->set_double_buffering_enabled(false);
window->set_title("Game of Life"); window->set_title("Game of Life");
auto main_widget = window->set_main_widget<GUI::Widget>(); auto main_widget = TRY(GameOfLife::MainWidget::try_create());
TRY(main_widget->load_from_gml(game_of_life_gml)); window->set_main_widget(main_widget);
main_widget->set_fill_with_background_color(true); main_widget->set_fill_with_background_color(true);
auto& main_toolbar = *main_widget->find_descendant_of_type_named<GUI::Toolbar>("toolbar"); auto& main_toolbar = *main_widget->find_descendant_of_type_named<GUI::Toolbar>("toolbar");