mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 15:57:45 +00:00
LibGUI: Allow specifying GUI::Statusbar segment count in GML
This commit is contained in:
parent
b2576b7e45
commit
ee1a4a06e0
2 changed files with 24 additions and 16 deletions
|
@ -24,20 +24,11 @@ Statusbar::Statusbar(int label_count)
|
||||||
layout()->set_margins({ 0, 0, 0, 0 });
|
layout()->set_margins({ 0, 0, 0, 0 });
|
||||||
layout()->set_spacing(2);
|
layout()->set_spacing(2);
|
||||||
|
|
||||||
if (label_count < 1)
|
|
||||||
label_count = 1;
|
|
||||||
|
|
||||||
for (auto i = 0; i < label_count; i++) {
|
|
||||||
m_segments.append(Segment {
|
|
||||||
.label = create_label(),
|
|
||||||
.text = {},
|
|
||||||
.override_text = {},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
m_corner = add<ResizeCorner>();
|
m_corner = add<ResizeCorner>();
|
||||||
|
set_label_count(label_count);
|
||||||
|
|
||||||
REGISTER_STRING_PROPERTY("text", text, set_text);
|
REGISTER_STRING_PROPERTY("text", text, set_text);
|
||||||
|
REGISTER_INT_PROPERTY("label_count", label_count, set_label_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
Statusbar::~Statusbar()
|
Statusbar::~Statusbar()
|
||||||
|
@ -46,11 +37,12 @@ Statusbar::~Statusbar()
|
||||||
|
|
||||||
NonnullRefPtr<Label> Statusbar::create_label()
|
NonnullRefPtr<Label> Statusbar::create_label()
|
||||||
{
|
{
|
||||||
auto& label = add<Label>();
|
auto label = Label::construct();
|
||||||
label.set_frame_shadow(Gfx::FrameShadow::Sunken);
|
insert_child_before(*label, *m_corner);
|
||||||
label.set_frame_shape(Gfx::FrameShape::Panel);
|
label->set_frame_shadow(Gfx::FrameShadow::Sunken);
|
||||||
label.set_frame_thickness(1);
|
label->set_frame_shape(Gfx::FrameShape::Panel);
|
||||||
label.set_text_alignment(Gfx::TextAlignment::CenterLeft);
|
label->set_frame_thickness(1);
|
||||||
|
label->set_text_alignment(Gfx::TextAlignment::CenterLeft);
|
||||||
return label;
|
return label;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,6 +62,20 @@ void Statusbar::set_text(size_t index, String text)
|
||||||
update_label(index);
|
update_label(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Statusbar::set_label_count(size_t label_count)
|
||||||
|
{
|
||||||
|
if (label_count <= 1)
|
||||||
|
label_count = 1;
|
||||||
|
|
||||||
|
for (auto i = m_segments.size(); i < label_count; i++) {
|
||||||
|
m_segments.append(Segment {
|
||||||
|
.label = create_label(),
|
||||||
|
.text = {},
|
||||||
|
.override_text = {},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Statusbar::update_label(size_t index)
|
void Statusbar::update_label(size_t index)
|
||||||
{
|
{
|
||||||
auto& segment = m_segments.at(index);
|
auto& segment = m_segments.at(index);
|
||||||
|
|
|
@ -28,6 +28,8 @@ protected:
|
||||||
virtual void resize_event(ResizeEvent&) override;
|
virtual void resize_event(ResizeEvent&) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
size_t label_count() const { return m_segments.size(); }
|
||||||
|
void set_label_count(size_t label_count);
|
||||||
NonnullRefPtr<Label> create_label();
|
NonnullRefPtr<Label> create_label();
|
||||||
struct Segment {
|
struct Segment {
|
||||||
NonnullRefPtr<GUI::Label> label;
|
NonnullRefPtr<GUI::Label> label;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue