/* * Copyright 2006-2010, Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. */ #ifndef _GROUP_LAYOUT_BUILDER_H #define _GROUP_LAYOUT_BUILDER_H #include #include #include class BGroupLayoutBuilder { public: BGroupLayoutBuilder( orientation orientation = B_HORIZONTAL, float spacing = B_USE_DEFAULT_SPACING); BGroupLayoutBuilder(BGroupLayout* layout); BGroupLayoutBuilder(BGroupView* view); BGroupLayout* RootLayout() const; BGroupLayout* TopLayout() const; BGroupLayoutBuilder& GetTopLayout(BGroupLayout** _layout); BView* TopView() const; BGroupLayoutBuilder& GetTopView(BView** _view); BGroupLayoutBuilder& Add(BView* view); BGroupLayoutBuilder& Add(BView* view, float weight); BGroupLayoutBuilder& Add(BLayoutItem* item); BGroupLayoutBuilder& Add(BLayoutItem* item, float weight); BGroupLayoutBuilder& AddGroup(orientation orientation, float spacing = B_USE_DEFAULT_SPACING, float weight = 1.0f); BGroupLayoutBuilder& End(); BGroupLayoutBuilder& AddGlue(float weight = 1.0f); BGroupLayoutBuilder& AddStrut(float size); BGroupLayoutBuilder& SetInsets(float left, float top, float right, float bottom); operator BGroupLayout*(); private: bool _PushLayout(BGroupLayout* layout); void _PopLayout(); private: BGroupLayout* fRootLayout; BList fLayoutStack; }; #endif // _GROUP_LAYOUT_BUILDER_H