Flood: Use the new GML compiler
This commit is contained in:
parent
8434b3a0c6
commit
adaf4a9ed5
Notes:
sideshowbarker
2024-07-17 06:38:11 +09:00
Author: https://github.com/implicitfield Commit: https://github.com/SerenityOS/serenity/commit/adaf4a9ed5 Pull-request: https://github.com/SerenityOS/serenity/pull/20552 Reviewed-by: https://github.com/kleinesfilmroellchen ✅ Reviewed-by: https://github.com/timschumi ✅
8 changed files with 59 additions and 17 deletions
|
@ -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)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
@GUI::Frame {
|
||||
@Flood::MainWidget {
|
||||
fill_with_background_color: true
|
||||
layout: @GUI::VerticalBoxLayout {}
|
||||
|
||||
|
|
23
Userland/Games/Flood/MainWidget.h
Normal file
23
Userland/Games/Flood/MainWidget.h
Normal file
|
@ -0,0 +1,23 @@
|
|||
/*
|
||||
* Copyright (c) 2023, the SerenityOS developers
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <LibGUI/Widget.h>
|
||||
|
||||
namespace Flood {
|
||||
|
||||
class MainWidget : public GUI::Widget {
|
||||
C_OBJECT_ABSTRACT(MainWidget)
|
||||
public:
|
||||
static ErrorOr<NonnullRefPtr<MainWidget>> try_create();
|
||||
virtual ~MainWidget() override = default;
|
||||
|
||||
private:
|
||||
MainWidget() = default;
|
||||
};
|
||||
|
||||
}
|
|
@ -7,7 +7,6 @@
|
|||
#include "SettingsDialog.h"
|
||||
#include <AK/IntegralMath.h>
|
||||
#include <AK/QuickSort.h>
|
||||
#include <Games/Flood/SettingsDialogGML.h>
|
||||
#include <LibCore/DirIterator.h>
|
||||
#include <LibGUI/BoxLayout.h>
|
||||
#include <LibGUI/Button.h>
|
||||
|
@ -19,13 +18,12 @@
|
|||
|
||||
ErrorOr<NonnullRefPtr<SettingsDialog>> 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<GUI::Widget> settings_widget, GUI::Window* parent, size_t board_rows, size_t board_columns)
|
||||
SettingsDialog::SettingsDialog(NonnullRefPtr<Flood::SettingsWidget> 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)
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "SettingsWidget.h"
|
||||
#include <AK/Types.h>
|
||||
#include <LibGUI/Dialog.h>
|
||||
|
||||
|
@ -17,7 +18,7 @@ public:
|
|||
size_t board_columns() const { return m_board_columns; }
|
||||
|
||||
private:
|
||||
SettingsDialog(NonnullRefPtr<GUI::Widget> settings_widget, GUI::Window* parent, size_t board_rows, size_t board_columns);
|
||||
SettingsDialog(NonnullRefPtr<Flood::SettingsWidget> settings_widget, GUI::Window* parent, size_t board_rows, size_t board_columns);
|
||||
|
||||
size_t m_board_rows;
|
||||
size_t m_board_columns;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
@GUI::Frame {
|
||||
@Flood::SettingsWidget {
|
||||
fill_with_background_color: true
|
||||
layout: @GUI::VerticalBoxLayout {
|
||||
margins: [4]
|
23
Userland/Games/Flood/SettingsWidget.h
Normal file
23
Userland/Games/Flood/SettingsWidget.h
Normal file
|
@ -0,0 +1,23 @@
|
|||
/*
|
||||
* Copyright (c) 2023, the SerenityOS developers
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <LibGUI/Widget.h>
|
||||
|
||||
namespace Flood {
|
||||
|
||||
class SettingsWidget : public GUI::Widget {
|
||||
C_OBJECT_ABSTRACT(SettingsWidget)
|
||||
public:
|
||||
static ErrorOr<NonnullRefPtr<SettingsWidget>> try_create();
|
||||
virtual ~SettingsWidget() override = default;
|
||||
|
||||
private:
|
||||
SettingsWidget() = default;
|
||||
};
|
||||
|
||||
}
|
|
@ -5,9 +5,9 @@
|
|||
*/
|
||||
|
||||
#include "BoardWidget.h"
|
||||
#include "MainWidget.h"
|
||||
#include "SettingsDialog.h"
|
||||
#include <AK/URL.h>
|
||||
#include <Games/Flood/FloodWindowGML.h>
|
||||
#include <LibConfig/Client.h>
|
||||
#include <LibCore/System.h>
|
||||
#include <LibDesktop/Launcher.h>
|
||||
|
@ -82,8 +82,8 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
window->set_title("Flood");
|
||||
window->resize(304, 325);
|
||||
|
||||
auto main_widget = TRY(window->set_main_widget<GUI::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<GUI::Widget>("board_widget_container")->try_add<BoardWidget>(board_rows, board_columns));
|
||||
board_widget->board()->randomize();
|
||||
|
|
Loading…
Add table
Reference in a new issue