From d73a6674372d12f605b31c2aa2fb9406d049c054 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Fri, 27 Jun 2025 13:49:15 +0300 Subject: [PATCH] LibGUI: Implement very bad widget system :D --- userspace/libraries/LibGUI/CMakeLists.txt | 6 + userspace/libraries/LibGUI/Widget/Button.cpp | 60 +++++ userspace/libraries/LibGUI/Widget/Grid.cpp | 53 ++++ userspace/libraries/LibGUI/Widget/Label.cpp | 44 ++++ .../libraries/LibGUI/Widget/RoundedWidget.cpp | 117 +++++++++ .../libraries/LibGUI/Widget/TextArea.cpp | 96 +++++++ userspace/libraries/LibGUI/Widget/Widget.cpp | 241 ++++++++++++++++++ userspace/libraries/LibGUI/Window.cpp | 61 ++++- .../LibGUI/include/LibGUI/Widget/Button.h | 54 ++++ .../LibGUI/include/LibGUI/Widget/Grid.h | 42 +++ .../LibGUI/include/LibGUI/Widget/Label.h | 44 ++++ .../include/LibGUI/Widget/RoundedWidget.h | 42 +++ .../LibGUI/include/LibGUI/Widget/TextArea.h | 50 ++++ .../LibGUI/include/LibGUI/Widget/Widget.h | 163 ++++++++++++ .../libraries/LibGUI/include/LibGUI/Window.h | 5 + 15 files changed, 1076 insertions(+), 2 deletions(-) create mode 100644 userspace/libraries/LibGUI/Widget/Button.cpp create mode 100644 userspace/libraries/LibGUI/Widget/Grid.cpp create mode 100644 userspace/libraries/LibGUI/Widget/Label.cpp create mode 100644 userspace/libraries/LibGUI/Widget/RoundedWidget.cpp create mode 100644 userspace/libraries/LibGUI/Widget/TextArea.cpp create mode 100644 userspace/libraries/LibGUI/Widget/Widget.cpp create mode 100644 userspace/libraries/LibGUI/include/LibGUI/Widget/Button.h create mode 100644 userspace/libraries/LibGUI/include/LibGUI/Widget/Grid.h create mode 100644 userspace/libraries/LibGUI/include/LibGUI/Widget/Label.h create mode 100644 userspace/libraries/LibGUI/include/LibGUI/Widget/RoundedWidget.h create mode 100644 userspace/libraries/LibGUI/include/LibGUI/Widget/TextArea.h create mode 100644 userspace/libraries/LibGUI/include/LibGUI/Widget/Widget.h diff --git a/userspace/libraries/LibGUI/CMakeLists.txt b/userspace/libraries/LibGUI/CMakeLists.txt index 361b17f3..7f81b5fc 100644 --- a/userspace/libraries/LibGUI/CMakeLists.txt +++ b/userspace/libraries/LibGUI/CMakeLists.txt @@ -1,5 +1,11 @@ set(LIBGUI_SOURCES Texture.cpp + Widget/Button.cpp + Widget/Grid.cpp + Widget/Label.cpp + Widget/RoundedWidget.cpp + Widget/TextArea.cpp + Widget/Widget.cpp Window.cpp ) diff --git a/userspace/libraries/LibGUI/Widget/Button.cpp b/userspace/libraries/LibGUI/Widget/Button.cpp new file mode 100644 index 00000000..eeebc96c --- /dev/null +++ b/userspace/libraries/LibGUI/Widget/Button.cpp @@ -0,0 +1,60 @@ +#include +#include +#include + +namespace LibGUI::Widget +{ + + BAN::ErrorOr> Button::create(BAN::RefPtr parent, BAN::StringView text, Rectangle geometry) + { + auto* button_ptr = new Button(parent, geometry); + if (button_ptr == nullptr) + return BAN::Error::from_errno(ENOMEM); + auto button = BAN::RefPtr