From 10428fc7cefb2b824407b9215dda477ea73a3903 Mon Sep 17 00:00:00 2001 From: hanaa12G Date: Mon, 23 Oct 2023 04:30:04 +0700 Subject: [PATCH] Solitaire: Port to GML compilation --- Userland/Games/Solitaire/CMakeLists.txt | 7 ++----- Userland/Games/Solitaire/Game.cpp | 2 -- Userland/Games/Solitaire/MainWidget.h | 23 +++++++++++++++++++++++ Userland/Games/Solitaire/Solitaire.gml | 2 +- Userland/Games/Solitaire/main.cpp | 6 +++--- 5 files changed, 29 insertions(+), 11 deletions(-) create mode 100644 Userland/Games/Solitaire/MainWidget.h diff --git a/Userland/Games/Solitaire/CMakeLists.txt b/Userland/Games/Solitaire/CMakeLists.txt index 45776a02a5..cff7e50760 100644 --- a/Userland/Games/Solitaire/CMakeLists.txt +++ b/Userland/Games/Solitaire/CMakeLists.txt @@ -4,16 +4,13 @@ serenity_component( TARGETS Solitaire ) -stringify_gml(Solitaire.gml SolitaireGML.h solitaire_gml) +compile_gml(Solitaire.gml SolitaireGML.cpp solitaire_gml) set(SOURCES Game.cpp + SolitaireGML.cpp main.cpp ) -set(GENERATED_SOURCES - SolitaireGML.h -) - serenity_app(Solitaire ICON app-solitaire) target_link_libraries(Solitaire PRIVATE LibCards LibConfig LibGUI LibDesktop LibGfx LibCore LibMain) diff --git a/Userland/Games/Solitaire/Game.cpp b/Userland/Games/Solitaire/Game.cpp index e85631c4d9..66ce4fc12c 100644 --- a/Userland/Games/Solitaire/Game.cpp +++ b/Userland/Games/Solitaire/Game.cpp @@ -12,8 +12,6 @@ #include #include -REGISTER_WIDGET(Solitaire, Game); - namespace Solitaire { static constexpr uint8_t new_game_animation_delay = 2; diff --git a/Userland/Games/Solitaire/MainWidget.h b/Userland/Games/Solitaire/MainWidget.h new file mode 100644 index 0000000000..8b8b61b5aa --- /dev/null +++ b/Userland/Games/Solitaire/MainWidget.h @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2023, the SerenityOS developers + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include + +namespace Solitaire { + +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/Solitaire/Solitaire.gml b/Userland/Games/Solitaire/Solitaire.gml index d0a992c605..72e39f0faf 100644 --- a/Userland/Games/Solitaire/Solitaire.gml +++ b/Userland/Games/Solitaire/Solitaire.gml @@ -1,4 +1,4 @@ -@GUI::Widget { +@Solitaire::MainWidget { fill_with_background_color: true layout: @GUI::VerticalBoxLayout {} diff --git a/Userland/Games/Solitaire/main.cpp b/Userland/Games/Solitaire/main.cpp index 318f5a397f..963a2b0dba 100644 --- a/Userland/Games/Solitaire/main.cpp +++ b/Userland/Games/Solitaire/main.cpp @@ -7,9 +7,9 @@ */ #include "Game.h" +#include "MainWidget.h" #include #include -#include #include #include #include @@ -84,8 +84,8 @@ ErrorOr serenity_main(Main::Arguments arguments) if (mode >= Solitaire::Mode::__Count) update_mode(Solitaire::Mode::SingleCardDraw); - auto widget = window->set_main_widget(); - TRY(widget->load_from_gml(solitaire_gml)); + auto widget = TRY(Solitaire::MainWidget::try_create()); + window->set_main_widget(widget); auto& game = *widget->find_descendant_of_type_named("game"); game.set_focus(true);