mirror of
https://github.com/SerenityOS/serenity.git
synced 2025-01-24 02:12:09 -05:00
0dc9af5f7e
Also run it across the whole tree to get everything using the One True Style. We don't yet run this in an automated fashion as it's a little slow, but there is a snippet to do so in makeall.sh.
54 lines
1 KiB
C++
54 lines
1 KiB
C++
#pragma once
|
|
|
|
#include <AK/Badge.h>
|
|
#include <AK/OwnPtr.h>
|
|
#include <AK/Vector.h>
|
|
#include <AK/WeakPtr.h>
|
|
#include <LibGUI/GMargins.h>
|
|
|
|
class GWidget;
|
|
|
|
class GLayout {
|
|
public:
|
|
GLayout();
|
|
virtual ~GLayout();
|
|
|
|
void add_widget(GWidget&);
|
|
void add_layout(OwnPtr<GLayout>&&);
|
|
void add_spacer();
|
|
|
|
void remove_widget(GWidget&);
|
|
|
|
virtual void run(GWidget&) = 0;
|
|
|
|
void notify_adopted(Badge<GWidget>, GWidget&);
|
|
void notify_disowned(Badge<GWidget>, GWidget&);
|
|
|
|
GMargins margins() const { return m_margins; }
|
|
void set_margins(const GMargins&);
|
|
|
|
int spacing() const { return m_spacing; }
|
|
void set_spacing(int);
|
|
|
|
protected:
|
|
struct Entry {
|
|
enum class Type
|
|
{
|
|
Invalid = 0,
|
|
Widget,
|
|
Layout,
|
|
Spacer,
|
|
};
|
|
|
|
Type type { Type::Invalid };
|
|
WeakPtr<GWidget> widget;
|
|
OwnPtr<GLayout> layout;
|
|
};
|
|
void add_entry(Entry&&);
|
|
|
|
WeakPtr<GWidget> m_owner;
|
|
Vector<Entry> m_entries;
|
|
|
|
GMargins m_margins;
|
|
int m_spacing { 4 };
|
|
};
|