LibGUI: Make a macro for registering a GUI::Margins object property
This will allow anyone to register a margins property without having to duplicate the parsing logic.
This commit is contained in:
parent
f20c5e1872
commit
46a7e1b372
Notes:
sideshowbarker
2024-07-18 12:13:43 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/46a7e1b3726
2 changed files with 22 additions and 20 deletions
Userland/Libraries/LibGUI
|
@ -14,26 +14,7 @@ namespace GUI {
|
|||
Layout::Layout()
|
||||
{
|
||||
REGISTER_INT_PROPERTY("spacing", spacing, set_spacing);
|
||||
|
||||
register_property(
|
||||
"margins",
|
||||
[this] {
|
||||
JsonObject margins_object;
|
||||
margins_object.set("left", m_margins.left());
|
||||
margins_object.set("right", m_margins.right());
|
||||
margins_object.set("top", m_margins.top());
|
||||
margins_object.set("bottom", m_margins.bottom());
|
||||
return margins_object;
|
||||
},
|
||||
[this](auto value) {
|
||||
if (!value.is_array() || value.as_array().size() != 4)
|
||||
return false;
|
||||
int m[4];
|
||||
for (size_t i = 0; i < 4; ++i)
|
||||
m[i] = value.as_array().at(i).to_i32();
|
||||
set_margins({ m[0], m[1], m[2], m[3] });
|
||||
return true;
|
||||
});
|
||||
REGISTER_MARGINS_PROPERTY("margins", margins, set_margins);
|
||||
|
||||
register_property("entries",
|
||||
[this] {
|
||||
|
|
|
@ -46,4 +46,25 @@ private:
|
|||
int m_right { 0 };
|
||||
int m_bottom { 0 };
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#define REGISTER_MARGINS_PROPERTY(property_name, getter, setter) \
|
||||
register_property( \
|
||||
property_name, [this]() { \
|
||||
auto m = getter(); \
|
||||
JsonObject margins_object; \
|
||||
margins_object.set("left", m.left()); \
|
||||
margins_object.set("right", m.right()); \
|
||||
margins_object.set("top", m.top()); \
|
||||
margins_object.set("bottom", m.bottom()); \
|
||||
return margins_object; }, \
|
||||
[this](auto& value) { \
|
||||
if (!value.is_array() || value.as_array().size() != 4) \
|
||||
return false; \
|
||||
int m[4]; \
|
||||
for (size_t i = 0; i < 4; ++i) \
|
||||
m[i] = value.as_array().at(i).to_i32(); \
|
||||
setter({ m[0], m[1], m[2], m[3] }); \
|
||||
return true; \
|
||||
});
|
||||
|
|
Loading…
Add table
Reference in a new issue