1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 14:17:36 +00:00

LibGUI: Add GHBoxLayout and GVBoxLayout convenience classes

This commit is contained in:
Andreas Kling 2020-02-02 09:48:11 +01:00
parent 63364f8a5d
commit d67da8c101
50 changed files with 128 additions and 114 deletions

View file

@ -42,12 +42,12 @@ GAboutDialog::GAboutDialog(const StringView& name, const GraphicsBitmap* icon, C
auto widget = GWidget::construct();
set_main_widget(widget);
widget->set_fill_with_background_color(true);
widget->set_layout(make<GBoxLayout>(Orientation::Horizontal));
widget->set_layout(make<GHBoxLayout>());
auto left_container = GWidget::construct(widget.ptr());
left_container->set_size_policy(SizePolicy::Fixed, SizePolicy::Fill);
left_container->set_preferred_size(48, 0);
left_container->set_layout(make<GBoxLayout>(Orientation::Vertical));
left_container->set_layout(make<GVBoxLayout>());
auto icon_label = GLabel::construct(left_container);
icon_label->set_icon(m_icon);
icon_label->set_size_policy(SizePolicy::Fixed, SizePolicy::Fixed);
@ -55,7 +55,7 @@ GAboutDialog::GAboutDialog(const StringView& name, const GraphicsBitmap* icon, C
left_container->layout()->add_spacer();
auto right_container = GWidget::construct(widget.ptr());
right_container->set_layout(make<GBoxLayout>(Orientation::Vertical));
right_container->set_layout(make<GVBoxLayout>());
right_container->layout()->set_margins({ 0, 4, 4, 4 });
auto make_label = [&](const StringView& text, bool bold = false) {
@ -75,7 +75,7 @@ GAboutDialog::GAboutDialog(const StringView& name, const GraphicsBitmap* icon, C
auto button_container = GWidget::construct(right_container.ptr());
button_container->set_size_policy(SizePolicy::Fill, SizePolicy::Fixed);
button_container->set_preferred_size(0, 20);
button_container->set_layout(make<GBoxLayout>(Orientation::Horizontal));
button_container->set_layout(make<GHBoxLayout>());
button_container->layout()->add_spacer();
auto ok_button = GButton::construct("OK", button_container);
ok_button->set_size_policy(SizePolicy::Fixed, SizePolicy::Fixed);

View file

@ -35,10 +35,6 @@ GBoxLayout::GBoxLayout(Orientation orientation)
{
}
GBoxLayout::~GBoxLayout()
{
}
void GBoxLayout::run(GWidget& widget)
{
bool should_log = false;

View file

@ -29,10 +29,10 @@
#include <LibGUI/GLayout.h>
#include <LibGUI/GWidget.h>
class GBoxLayout final : public GLayout {
class GBoxLayout : public GLayout {
public:
explicit GBoxLayout(Orientation);
virtual ~GBoxLayout() override;
virtual ~GBoxLayout() override {}
Orientation orientation() const { return m_orientation; }
@ -41,3 +41,21 @@ public:
private:
Orientation m_orientation;
};
class GVBoxLayout final : public GBoxLayout {
public:
explicit GVBoxLayout()
: GBoxLayout(Orientation::Vertical)
{
}
virtual ~GVBoxLayout() override {}
};
class GHBoxLayout final : public GBoxLayout {
public:
explicit GHBoxLayout()
: GBoxLayout(Orientation::Horizontal)
{
}
virtual ~GHBoxLayout() override {}
};

View file

@ -47,15 +47,15 @@ void GColorPicker::build()
{
auto horizontal_container = GWidget::construct();
horizontal_container->set_fill_with_background_color(true);
horizontal_container->set_layout(make<GBoxLayout>(Orientation::Horizontal));
horizontal_container->set_layout(make<GHBoxLayout>());
horizontal_container->layout()->set_margins({ 4, 4, 4, 4 });
set_main_widget(horizontal_container);
auto left_vertical_container = GWidget::construct(horizontal_container.ptr());
left_vertical_container->set_layout(make<GBoxLayout>(Orientation::Vertical));
left_vertical_container->set_layout(make<GVBoxLayout>());
auto right_vertical_container = GWidget::construct(horizontal_container.ptr());
right_vertical_container->set_layout(make<GBoxLayout>(Orientation::Vertical));
right_vertical_container->set_layout(make<GVBoxLayout>());
enum RGBComponent {
Red,

View file

@ -81,16 +81,16 @@ GFilePicker::GFilePicker(Mode mode, const StringView& file_name, const StringVie
set_rect(200, 200, 700, 400);
auto horizontal_container = GWidget::construct();
set_main_widget(horizontal_container);
horizontal_container->set_layout(make<GBoxLayout>(Orientation::Horizontal));
horizontal_container->set_layout(make<GHBoxLayout>());
horizontal_container->layout()->set_margins({ 4, 4, 4, 4 });
horizontal_container->set_fill_with_background_color(true);
auto vertical_container = GWidget::construct(horizontal_container.ptr());
vertical_container->set_layout(make<GBoxLayout>(Orientation::Vertical));
vertical_container->set_layout(make<GVBoxLayout>());
vertical_container->layout()->set_spacing(4);
auto upper_container = GWidget::construct(vertical_container.ptr());
upper_container->set_layout(make<GBoxLayout>(Orientation::Horizontal));
upper_container->set_layout(make<GHBoxLayout>());
upper_container->layout()->set_spacing(4);
upper_container->set_size_policy(SizePolicy::Fill, SizePolicy::Fixed);
upper_container->set_preferred_size(0, 26);
@ -148,7 +148,7 @@ GFilePicker::GFilePicker(Mode mode, const StringView& file_name, const StringVie
toolbar->add_action(*mkdir_action);
auto lower_container = GWidget::construct(vertical_container.ptr());
lower_container->set_layout(make<GBoxLayout>(Orientation::Vertical));
lower_container->set_layout(make<GVBoxLayout>());
lower_container->layout()->set_spacing(4);
lower_container->set_size_policy(SizePolicy::Fill, SizePolicy::Fixed);
lower_container->set_preferred_size(0, 60);
@ -156,7 +156,7 @@ GFilePicker::GFilePicker(Mode mode, const StringView& file_name, const StringVie
auto filename_container = GWidget::construct(lower_container.ptr());
filename_container->set_size_policy(SizePolicy::Fill, SizePolicy::Fixed);
filename_container->set_preferred_size(0, 20);
filename_container->set_layout(make<GBoxLayout>(Orientation::Horizontal));
filename_container->set_layout(make<GHBoxLayout>());
auto filename_label = GLabel::construct("File name:", filename_container);
filename_label->set_text_alignment(TextAlignment::CenterLeft);
filename_label->set_size_policy(SizePolicy::Fixed, SizePolicy::Fill);
@ -187,7 +187,7 @@ GFilePicker::GFilePicker(Mode mode, const StringView& file_name, const StringVie
auto button_container = GWidget::construct(lower_container.ptr());
button_container->set_size_policy(SizePolicy::Fill, SizePolicy::Fixed);
button_container->set_preferred_size(0, 20);
button_container->set_layout(make<GBoxLayout>(Orientation::Horizontal));
button_container->set_layout(make<GHBoxLayout>());
button_container->layout()->set_spacing(4);
button_container->layout()->add_spacer();
@ -227,7 +227,7 @@ GFilePicker::GFilePicker(Mode mode, const StringView& file_name, const StringVie
preview_container->set_frame_shape(FrameShape::Container);
preview_container->set_frame_shadow(FrameShadow::Sunken);
preview_container->set_frame_thickness(2);
preview_container->set_layout(make<GBoxLayout>(Orientation::Vertical));
preview_container->set_layout(make<GVBoxLayout>());
preview_container->layout()->set_margins({ 8, 8, 8, 8 });
m_preview_image_label = GLabel::construct(preview_container);

View file

@ -54,7 +54,7 @@ void GInputBox::build()
set_rect(x(), y(), max_width + 80, 80);
widget->set_layout(make<GBoxLayout>(Orientation::Vertical));
widget->set_layout(make<GVBoxLayout>());
widget->set_fill_with_background_color(true);
widget->layout()->set_margins({ 8, 8, 8, 8 });
@ -71,10 +71,10 @@ void GInputBox::build()
auto button_container_outer = GWidget::construct(widget.ptr());
button_container_outer->set_size_policy(SizePolicy::Fill, SizePolicy::Fixed);
button_container_outer->set_preferred_size(0, 20);
button_container_outer->set_layout(make<GBoxLayout>(Orientation::Vertical));
button_container_outer->set_layout(make<GVBoxLayout>());
auto button_container_inner = GWidget::construct(button_container_outer.ptr());
button_container_inner->set_layout(make<GBoxLayout>(Orientation::Horizontal));
button_container_inner->set_layout(make<GHBoxLayout>());
button_container_inner->layout()->set_spacing(8);
m_cancel_button = GButton::construct(button_container_inner);

View file

@ -82,7 +82,7 @@ void GMessageBox::build()
int text_width = widget->font().width(m_text);
int icon_width = 0;
widget->set_layout(make<GBoxLayout>(Orientation::Vertical));
widget->set_layout(make<GVBoxLayout>());
widget->set_fill_with_background_color(true);
widget->layout()->set_margins({ 0, 15, 0, 15 });
@ -91,7 +91,7 @@ void GMessageBox::build()
RefPtr<GWidget> message_container = widget;
if (m_type != Type::None) {
message_container = GWidget::construct(widget.ptr());
message_container->set_layout(make<GBoxLayout>(Orientation::Horizontal));
message_container->set_layout(make<GHBoxLayout>());
message_container->layout()->set_margins({ 8, 0, 8, 0 });
message_container->layout()->set_spacing(8);
@ -107,7 +107,7 @@ void GMessageBox::build()
label->set_preferred_size(text_width, 16);
auto button_container = GWidget::construct(widget.ptr());
button_container->set_layout(make<GBoxLayout>(Orientation::Horizontal));
button_container->set_layout(make<GHBoxLayout>());
button_container->layout()->set_spacing(5);
button_container->layout()->set_margins({ 15, 0, 15, 0 });

View file

@ -41,7 +41,7 @@ GStatusBar::GStatusBar(int label_count, GWidget* parent)
{
set_size_policy(SizePolicy::Fill, SizePolicy::Fixed);
set_preferred_size(0, 20);
set_layout(make<GBoxLayout>(Orientation::Horizontal));
set_layout(make<GHBoxLayout>());
layout()->set_margins({ 2, 2, 2, 2 });
layout()->set_spacing(2);