LibGUI: Improve widget registration mechanism a bit

Allow registering widgets from namespaces other than GUI. :^)
Also add a few widgets.
This commit is contained in:
Andreas Kling 2020-09-14 09:56:00 +02:00
parent 3ab706cac3
commit 3c580233d1
Notes: sideshowbarker 2024-07-19 02:25:50 +09:00
2 changed files with 22 additions and 13 deletions

View file

@ -40,7 +40,11 @@
#include <LibGUI/ScrollBar.h>
#include <LibGUI/Slider.h>
#include <LibGUI/SpinBox.h>
#include <LibGUI/Splitter.h>
#include <LibGUI/StatusBar.h>
#include <LibGUI/TextBox.h>
#include <LibGUI/ToolBar.h>
#include <LibGUI/ToolBarContainer.h>
#include <LibGUI/Widget.h>
#include <LibGUI/Window.h>
#include <LibGUI/WindowServerConnection.h>
@ -51,16 +55,21 @@
namespace GUI {
REGISTER_WIDGET(Button)
REGISTER_WIDGET(CheckBox)
REGISTER_WIDGET(GroupBox)
REGISTER_WIDGET(Label)
REGISTER_WIDGET(RadioButton)
REGISTER_WIDGET(ScrollBar)
REGISTER_WIDGET(Slider)
REGISTER_WIDGET(SpinBox)
REGISTER_WIDGET(TextBox)
REGISTER_WIDGET(Widget)
REGISTER_WIDGET(GUI, Button)
REGISTER_WIDGET(GUI, CheckBox)
REGISTER_WIDGET(GUI, GroupBox)
REGISTER_WIDGET(GUI, HorizontalSplitter)
REGISTER_WIDGET(GUI, Label)
REGISTER_WIDGET(GUI, RadioButton)
REGISTER_WIDGET(GUI, ScrollBar)
REGISTER_WIDGET(GUI, Slider)
REGISTER_WIDGET(GUI, SpinBox)
REGISTER_WIDGET(GUI, StatusBar)
REGISTER_WIDGET(GUI, TextBox)
REGISTER_WIDGET(GUI, TextEditor)
REGISTER_WIDGET(GUI, ToolBar)
REGISTER_WIDGET(GUI, ToolBarContainer)
REGISTER_WIDGET(GUI, Widget)
static HashMap<String, WidgetClassRegistration*>& widget_classes()
{

View file

@ -38,9 +38,9 @@
#include <LibGfx/Rect.h>
#include <LibGfx/StandardCursor.h>
#define REGISTER_WIDGET(class_name) \
extern WidgetClassRegistration registration_##class_name; \
WidgetClassRegistration registration_##class_name(#class_name, []() { return class_name::construct(); });
#define REGISTER_WIDGET(namespace_, class_name) \
extern GUI::WidgetClassRegistration registration_##class_name; \
GUI::WidgetClassRegistration registration_##class_name(#namespace_ "::" #class_name, []() { return namespace_::class_name::construct(); });
namespace GUI {